Почему Django обслуживает только файлы, содержащие пробел? - PullRequest
1 голос
/ 03 февраля 2009

Я пишу простое приложение на Django. В целях тестирования / разработки я пытаюсь обслуживать статический контент веб-сайта, используя сервер разработки Django согласно http://docs.djangoproject.com/en/dev/howto/static-files/#howto-static-files.

Мой urls.py содержит:

    (r'^admin/(.*)', admin.site.root),

    (r'^(?P<page_name>\S*)$', 'Blah.content.views.index'),

    (r'^static/(?P<path>.*)$', 'django.views.static.serve',
        {'document_root': 'C:/Users/My User/workspace/Blah/media',
         'show_indexes': True})

Однако, когда я пытаюсь получить доступ к файлу, например http://localhost:8000/static/images/Logo.jpg, Django выдает ошибку 404, утверждая, что «Нет страницы соответствует данному запросу».

Когда я пытаюсь получить доступ к файлу, например http://localhost:8000/static/images/Blah%20Logo.jpg, он обслуживает файл!

Что происходит?

1 Ответ

10 голосов
/ 03 февраля 2009

У вас неправильный порядок шаблонов в urls.py.

Когда вы пытаетесь получить путь без пробела, он соответствует:

(r'^(?P<page_name>\S*)$', 'Blah.content.views.index'),

не static.serve и, конечно, у вас нет такой страницы, но когда вы пытаетесь получить доступ к пути с пробелом , он соответствует правильному шаблону static.serve, потому что он более общий и допускает пробелы.

Чтобы решить эту проблему, просто поменяйте местами эти шаблоны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...