当存在url模式时,Django的APPEND_斜杠会添加斜杠,但前提是url中没有西里尔字母

2024-03-29 10:39:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我在网站上写了一个应用程序,用来上传和服务媒体文件(给注册用户)。 实际上,文件由nginx提供,使用x-accel-redirect头。在

当浏览器尝试下载时,例如http://127.0.0.1:8000/mediacontent/files/abc.pdf 它能让HTTP301abc.pdf/,但如果文件包含西里尔字母,例如“/файаааааааааааа!在

为什么ADD_斜杠添加/到纯ASCII URL,而它是匹配模式?在

网站也基于django cms,如果它有区别的话。在

在网址.py公司名称:

(r'^mediacontent/', include('mediacontent.urls')),

媒体内容/网址.py公司名称:

^{pr2}$

在视图.py公司名称:

def serve_mediacontent(request, path):
    webserver = getattr(settings, 'WEBSERVER', 'nginx')
    if webserver == 'nginx':
        response = HttpResponse()
        response['Content-Type'] = ""
        response['X-Accel-Redirect'] = "/media/files/" + path.encode("utf-8")
        return response

Tags: 文件pathpy名称应用程序pdf网站response