APPEND_SLASH в Django добавляет косую черту, когда есть шаблон URL, но только если в URL НЕТ кириллических букв - PullRequest
1 голос
/ 21 октября 2011

Я написал приложение на сайте, чтобы загружать и обслуживать медиафайлы (зарегистрированным пользователям). На самом деле, файлы обслуживаются nginx, используя заголовок x-accel-redirect.

Когда браузер пытается загрузить, например, http://127.0.0.1:8000/mediacontent/files/abc.pdf он возвращает HTTP301 в "abc.pdf /", но если файл содержит буквы кириллицы, например, "/файл.pdf", все в порядке, браузер получает файл!

Почему ADD_SLASHES добавляет / к обычному URL ASCII, в то время как он соответствует шаблону?

Сайт также основан на django-cms, если это имеет значение.

urls.py:

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

Медиаконтент / 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
...