Как обслуживать статические файлы в разработке Django - PullRequest
0 голосов
/ 08 марта 2012

Вот структура каталогов проекта.

mysite
  \media
  \static
       \images
       \css
           base.css
       \js 
  \templates
       base.html
  \settings.py #and other .py files

Теперь скажите, есть ли у меня файл C:\mysite\static\css\base.css или изображение C:\mysite\static\images\ball.png. Как мне его обслуживать, используя сервер разработки django. Я знаю, что это не рекомендуемый способ, но просто в разработке, я хочу, чтобы это работало. Я прочитал документы и другие ответы по stackoverflow, но, похоже, они не работают. Может быть, меня смущают media и static и urlpatterns. Я часами пытался это выяснить, но все равно не повезло. Я новичок в Django, и все это кажется мне просто излишним, чтобы получить CSS или изображение, появляющееся. Какие изменения или редактирование мне нужно сделать, чтобы это работало. Как я буду ссылаться на изображение и CSS в шаблоне?

Ответы [ 3 ]

4 голосов
/ 08 марта 2012

Ниже описано, как получить статические файлы из документации Django , которая пошагово проведет вас через весь процесс.

Добавьте следующее в ваш urls.py

from django.contrib.staticfiles.urls import staticfiles_urlpatterns

# ... the rest of your URLconf goes here ...

urlpatterns += staticfiles_urlpatterns()

Тогда 'Это представление автоматически включается и будет обслуживать ваши статические файлы по адресу STATIC_URL, когда вы используете встроенную команду управления runserver. ... Это проверит вашу настройку STATIC_URL и подключит представление для соответствующей обработки статических файлов. Не забудьте правильно установить параметр STATICFILES_DIRS, чтобы django.contrib.staticfiles знал, где искать файлы, помимо файлов в каталогах приложений. '

Стоит отметить, что это совершенно определенно не подходит для развертывания, но будет хорошо работать для разработки.

3 голосов
/ 08 марта 2012

Проблема в том, что вы не должны вручную вводить что-либо в STATIC_ROOT.Это всего лишь свалка для управляющей команды collectstatic в производстве, и предполагается, что она будет обслуживаться вашим веб-сервером.

В процессе разработки Django автоматически выполняет все, что угодно в "статических" приложениях."каталоги и любые папки в STATICFILES_DIR.Если у вас есть статические ресурсы всего проекта, вам нужно создать совершенно отдельную папку, отличную от STATIC_ROOT и MEDIA_ROOT, и добавить ее к STATICFILES_DIRS.Я обычно называю это «активы», но это имя не имеет значения.

0 голосов
/ 08 марта 2012
  1. Добавьте полный путь к media и static к STATICFILES_DIRS в settings.py
  2. Убедитесь, что TEMPLATE_CONTEXT_PROCESSORS в settings.py содержит 'django.core.context_processors.static',. Это там по умолчанию.
  3. Используйте {{ STATIC_URL }}images/ball.png в своих шаблонах.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...