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

时间:2011-10-20 20:29:53

标签: python django django-cms

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

当浏览器尝试下载时,例如http://127.0.0.1:8000/mediacontent/files/abc.pdf 它将HTTP301变为“abc.pdf /”,但如果文件包含西里尔字母,例如“/файл.pdf”,一切正常,浏览器获取文件!

为什么ADD_SLASHES添加/到纯ASCII URL,而它匹配模式?

网站也基于django-cms,如果它有所不同。

urls.py:

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

mediacontent / urls.py:

url(r'^files/(?P<path>.*)$', login_required(serve_mediacontent), name="serve"),

views.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

0 个答案:

没有答案