Сообщество,Django: пользовательский вид внутри/статический/каталог
Я использую Django 1.7. Из-за специфики проекта у меня есть сложные потребности в обработке статических файлов. Другими словами, мне нужно, чтобы /static/
обслуживался при разработке, как обычно, но подкаталог /static/blueprints/
должен обслуживаться пользовательским представлением.
Кажется, что статический режим просмотра имеет приоритет выше всего в urls.py
. Следующие только не работают:
urlpatterns = patterns('',
url(r'^static/blueprints/(?P<blueprint>[\w-]+)/(?P<path>.+)', 'my_view_name'),
...
)
Этот вид никогда не срабатывает при доступе к соответствующему URL-адресу. Но изменение static/blueprints
, скажем, my_static/blueprints
делает этот путь работать, поэтому представление действительно работает.
Конечно, мне это нужно только при разработке; на производстве скрипт будет использоваться для формирования необходимой структуры каталогов, обслуживаемой Nginx. Таким образом, решения:
- Избегайте использования
debug=True
на devserver. Но отладчик Django очень полезен. - Не используйте
django.contrib.staticfiles
. Не нравится, я бы хотел использовать командуcollectstaic
. - Используйте только
/blueprints/
путь вместо/static/blueprints/
, который является решением, но просто против эстетики.
Есть ли более элегантное решение?
'my_view_name'? или как вы предполагаете, что вид делает этот путь работать? https://github.com/django/django/blob/master/django/views/static.py#L21 – madzohan
Ну, 'my_view_name' на самом деле' myapp.views.blueprint_view', который является моим собственным представлением. И на самом деле он использует вид, к которому вы привязаны, просто добавляет некоторую пользовательскую логику. – Altaisoft
Итак, я не знаю, что на самом деле делает этот вид, но при использовании 'serve' вы должны предоставить параметр' 'document_root'' и где' '' в конце вашего шаблона? 'url (r '^ static/(? P. *) $', 'django.views.static.serve', {'document_root': settings.STATIC_ROOT}),' –
madzohan