Структура вашего каталога также может зависеть от того, какую версию django вы используете.Если вы используете django 1.3, обработка статического содержимого изменилась незначительно.Ваши шаблоны также могут быть расположены отдельно.
Следующее относится только к django 1.3.
В каталоге app
:
...
app1/
static/
app1/
templates/
app1/
models.py
...
views.py
Если вы используете новое приложение django.contrib.staticfiles , ваши настройки могут выглядеть примерно так:
MEDIA_ROOT = path.join(ROOT_PATH,'uploaded_media/')
MEDIA_URL = '/uploaded_media/'
# static content is collected here, and served from here, but don't add stuff manually here! add to staticfiles_dirs
STATIC_ROOT = path.join(ROOT_PATH, 'collected_static/')
ADMIN_MEDIA_PREFIX = '/static/admin/'
STATIC_URL = '/static/'
# Additional locations of static files
STATICFILES_DIRS = (
path.join(ROOT_PATH, 'src/extra_static/'),
)
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
Аналогично, ваши шаблоны можно загружать непосредственно из INSTALLED_APP
:
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader'
)
TEMPLATE_DIRS = (
path.join(ROOT_PATH,'src/templates/'),
)
Приведенные выше две стратегии означают, что шаблоны и статический контент могут находиться в своих каталогах приложений.В разработке, используя contrib.staticfiles
, статический контент можно обслуживать прямо из папок вашего приложения.В производственной среде есть команда управления для сбора всего статического содержимого каталога приложения в /path/to/project/collected_static/
, и вы можете указать своему веб-серверу на этот каталог для обслуживания статического содержимого.
Для предварительно упакованных библиотек, используя virtualenvи пип это отличная идея.В противном случае мне нравится хранить библиотеки в каталоге lib
в корневом каталоге проекта.Это делает ссылку на источник, шаблоны и статический контент чрезвычайно удобной, вместо установки на site-packages
(особенно, если не используется virtualenv).
Итак, реорганизация структуры вашего проекта:
webapps/
myproject/
apache/
bin/
lib/
collected_static/
uploaded_media/
myproject.wsgi
src/
templates/ # lib template overrides and site wide templates
base.html
lib_1/
nav.html
extra_static/
lib_1/ # libs that dont support django 1.3 static
js/
css/
settings.py
settingslocal.py # keep developer specific settings here
urls.py
manage.py
app1/
__init.py
static/
app1/
js/
css/
templates/
app1/