Расширение комментария Shamanu4: вы запрашиваете, как обрабатываются статические файлы.В целях разработки вы можете использовать статический файловый сервер .
В долгосрочной перспективе, однако это не оптимальное решение.Самый простой способ - разделить все ваши статические файлы и обслуживать их напрямую через веб-браузер по другому пути.В Apache этот статический путь к файлу может быть внутри вашего пути Django, если вы сначала настроите статический путь.
Если вам нужна высокая производительность, команда Django рекомендует использовать легкий, оптимизированный по скорости сервер (например, lighttpd) для обслуживания статических файлов, а другой сервер с поддержкой WSGI (например, Apache) для обслуживания Django.
В проекте Django, который у меня есть на работе, Django обслуживается из /djangoprojname/
, а статические файлы обслуживаютсяот /djangoprojname/static/
.На диске каталог static
находится на том же уровне, что и каталог моего проекта Django.оба из которых находятся в хранилище Mercurial.В static/
у меня есть css/
, js/
и img/
, и в этих каталогах у меня есть один каталог на приложение, названный так же, как приложение.Это не дает запутаться.
Мой django.conf
(в /etc/httpd/conf.d
на Fedora или RHEL) выглядит примерно так:
WSGIDaemonProcess djangoprojname threads=15
WSGISocketPrefix /var/run/wsgi/wsgi
Alias /djangoprojname/static/ /var/www/djangoprojname/static/
Alias /djangoprojname/admin/media/ /usr/lib/python2.6/site-packages/django/contrib/admin/media/
WSGIScriptAlias /djangoprojname /var/www/djangoprojname/django.wsgi
WSGIProcessGroup djangoprojname
<Directory /var/www/djangoprojname>
Order deny,allow
Allow from all
</Directory>
<Directory /usr/lib/python2.6/site-packages/django/contrib/admin/media>
Order deny,allow
Allow from all
</Directory>
Для разработки я добавил это в конецurls.py
:
# Only serve static media if in development (runserver) mode.
if settings.IS_DEV:
urlpatterns += patterns('',
url(r'^static/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': settings.MEDIA_ROOT,
'show_indexes': True}),
)
settings.IS_DEV
моего проекта установлено в моем settings.py
на True
, если это выполняется на сервере разработки.manage.py
модифицируется для установки переменной среды, если используется runserver
, и settings.py
проверяет эту переменную.MEDIA_ROOT
- путь к каталогу static
.