Обслуживание статических файлов из каталога проекта в Django

У меня есть следующая структура проекта:

myproject
    - myapp
    - manage.py
    - myproject
          - settings.py
          - urls.py
          ...
    - static
    - templates

Я хочу обслуживать все мои статические файлы из этой статической папки. В моем settings.py у меня есть следующее:

STATIC_URL = '/static/'

Однако в одном из моих шаблонов, когда я вызываю статические файлы, используя следующее...

{% load static %}
...
<link href="{% static 'css/styles.css' %}" rel="stylesheet" />

... ничего не загружается.

Однако, если я добавлю файл css в myapp/static/css/styles.css, все будет работать правильно. Как я могу обслуживать статические файлы из корневой папки моего проекта? Спасибо за любую помощь.


person darkhorse    schedule 29.12.2019    source источник
comment
Я не уверен, что понимаю ваш вопрос, потому что в примере кода похоже, что вы пытаетесь загрузить файл из myproject/static/css/styles.css, а в последнем абзаце вы упоминаете, что добавление файла css в указанный локация работает. Я правильно понял и откуда вы хотите обслуживать статические файлы?   -  person Armin    schedule 29.12.2019
comment
Не могли бы вы поделиться следующими настройками? STATICFILES_DIRS, STATICFILES_FINDERS и STATIC_ROOT   -  person Iain Shelvington    schedule 29.12.2019
comment
Вы работаете на сервере разработки? В этой SO link есть подробное объяснение.   -  person Chris    schedule 29.12.2019


Ответы (1)


Первый шаг: структура вашего проекта (каталог папок) выглядит нормально.

myproject
- myapp
- manage.py
- myproject
      - settings.py
      - urls.py
      ...
- static
- templates

Второе: необходимо определить STATIC_URL = '/static/' в файле settings.py.

Третье: необходимо загрузить статические данные в файл шаблона и использовать относительный путь.

{% load static %}
...
<link href="{% static 'css/styles.css' %}" rel="stylesheet" />

Добавьте этот файл settings.py.

# Add static file directory
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)

Список установленных приложений в settings.py должен существовать в django.contrib.staticfiles в списке. если нет, то убедитесь, что он есть в списке.

person Iqbal Hussain    schedule 29.12.2019