Если вы следуете рекомендациям django, вы можете значительно упростить свою жизнь.
В своем примере кода внутри каталога application создайте папку с именем static .Внутри этой папки поместите ваши CSS-файлы.
Пример:
$ django-admin.py startproject myproject
$ cd myproject
myproject$ python manage.py startapp myapp
myproject$ mkdir myapp/static
myproject$ cd myapp/static
myproject/myapp/static$ nano style.css
В ваших шаблонах:
<link rel="stylesheet" href="{{ STATIC_URL }}style.css" />
Убедитесь, что вы добавили myapp
в список INSTALLED_APPS
в settings.py
.Теперь, когда вы используете встроенный сервер разработки, ваша таблица стилей будет отображаться правильно.
Django ищет каталог static
внутри установленных приложений по умолчанию, а в текущих версиях django статические файлы включены по умолчанию.
В примере Djangoпуть my_app/static/my_app/myimage.jpg
, который немного сбивает с толку, если ваше приложение и проект имеют одно и то же имя.
Это рекомендуется, потому что при запуске collectstatic
для сбора всех ваших статических файлов, файлы с одинаковымимя будет перезаписано.Если у вас есть файл с именем myimage.jpg
в другом приложении, он будет перезаписан.Задание имени приложения внутри статического каталога предотвратит это, поскольку точная структура каталога будет реплицирована в вашем каталоге STATIC_ROOT
.
Простой пример, иллюстрирующий эту точку.Если у вас есть проект django с двумя приложениями, например:
.
├── assets
├── manage.py
├── myapp
│ ├── __init__.py
│ ├── models.py
│ ├── static
│ │ └── myapp
│ │ └── test.txt
│ ├── tests.py
│ └── views.py
├── myproj
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── settings.py
│ ├── settings.pyc
│ ├── urls.py
│ └── wsgi.py
└── otherapp
├── __init__.py
├── models.py
├── static
│ └── otherapp
│ └── test.txt
├── tests.py
└── views.py
assets
- ваш STATIC_ROOT
.Теперь, когда вы запускаете collectstatic
:
.
├── assets
│ ├── myapp
│ │ └── test.txt
│ └── otherapp
│ └── test.txt
├── manage.py
├── myapp
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── models.py
│ ├── static
│ │ └── myapp
│ │ └── test.txt
│ ├── tests.py
│ └── views.py
├── myproj
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── settings.py
│ ├── settings.pyc
│ ├── urls.py
│ └── wsgi.py
└── otherapp
├── __init__.py
├── __init__.pyc
├── models.py
├── static
│ └── otherapp
│ └── test.txt
├── tests.py
└── views.py
Вы видите, что он также создает каталоги.В ваших шаблонах вы теперь будете ссылаться на каждый файл с его «пространством имен» приложения: {{ STATIC_URL }}/myapp/test.txt