обслуживание статических файлов в учебном руководстве по Django - PullRequest
4 голосов
/ 22 апреля 2011

Есть ли у кого-нибудь простое пошаговое руководство по обслуживанию статических файлов в производственном приложении Django?Я прочитал Django docs , и это звучит очень сложно ... Я пытаюсь пойти по пути обслуживания статических файлов, используя другой сервер, такой как lighttpd, nginx или cherokee, но все это настраивается на греческоммне.Я скачал lighttpd, попытался следовать инструкциям по установке и через несколько секунд получил ошибку.Пропустить то или иное или еще много чего ... Я не юник в UNIX, и я не очень хорош в C / C ++, поэтому все это ./configure и MAKE install являются для меня бредом ... Так что я думаю, что мои непосредственные вопросыявляются:

  1. Какой сервер вы бы порекомендовали обслуживать статическими файлами, которые просты в установке и обслуживании?
  2. Предполагается, что сервер действительно запущен и работает, тогда что?Как мне попросить Django искать файлы на другом сервере?
  3. Опять же, у кого-нибудь есть пошаговые руководства?

Большое спасибо!

Ответы [ 2 ]

5 голосов
/ 22 апреля 2011

Извините, пошагового руководства нет.Но вот обзор высокого уровня, который может помочь:

  1. Возможно, вы захотите использовать сервер Apache (http://httpd.apache.org/) Это входит в большинство * nix-дистрибутивов.
  2. Затем вы хотите использовать мод Python (или, как указал комментатор, mod_wsgi: http://docs.djangoproject.com/en/dev/howto/deployment/modwsgi/) для подключения к Django: http://docs.djangoproject.com/en/dev/howto/deployment/modpython/?from=olddocs. После того, как вы выполните этот шаг, Apache теперь находится в Django.
  3. Затем вы хотите собрать статические файлы в вашем Django в один каталог и указать apache на этот каталог. Это можно сделать с помощью ./manage.py collectstatic, если вы использовали django.contrib.staticfiles (http://docs.djangoproject.com/en/dev/howto/static-files/.)

Таким образом, хитрость заключается в том, что вы не говорите Django о делегировании обслуживания статических файлов конкретному серверу, а скорее говорите httpd, какие URL-адреса обслуживаются через Django, а какие - статические файлы.1019 * Еще один способ сказать, что все запросы поступают на веб-сервер Apache. Веб-сервер, в соответствии с правилами, указанными в httpd.conf, будет решать, будет ли запросдля статического файла или для динамического файла, сгенерированного django.Если это для статического файла, он будет просто обслуживать файл.Если запрос направлен на динамический файл, он через modpython передаст запрос Django.

Надеюсь, это поможет.

1 голос
/ 17 марта 2015

Разработка

STATICFILES_DIRS должна иметь все статические каталоги, внутри которых находятся все статические файлы.

STATIC_URL должно быть /static/, если ваши файлы находятся на локальной машине, в противном случае поместитездесь базовый URL, например http://example.com/.

INSTALLED_APPS должен включать django.contrib.staticfiles.

В шаблоне загрузить модуль staticfiles:

{% load staticfiles %}
<img src='{% static "images/test.png" %}' alt='img' />

Производство

Добавьте STATIC_ROOT, который используется Django для сбора всех статических файлов из STATICFILES_DIRS в него.

Сбор статических файлов:

$ python manage.py collectstatic

Добавьте путь к urls.py :

from . import settings

urlpatterns = patterns('',
..
    url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root':settings.STATIC_ROOT)}),)

Более подробные статьи перечислены ниже:

...