あなたのディレクトリ構造は、使用しているdjangoのバージョンによって異なる場合があります。 django 1.3を使用している場合は、静的コンテンツの処理がわずかに変更されています。あなたのテンプレートは別々に配置することもできます。
以下はdjango 1.3にのみ適用されます。新しいdjango.contrib.staticfilesアプリケーションを使用する場合は
...
app1/
static/
app1/
templates/
app1/
models.py
...
views.py
は、あなたの設定は次のようになります。:app
ディレクトリ内
同様
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/'),
)
上記の2つの戦略は、テンプレートと静的コンテンツが特定のアプリディレクトリ内に存在することを意味します。開発では、contrib.staticfiles
を使用して、静的コンテンツをアプリケーションフォルダから直接配信できます。プロダクションでは、すべてのアプリディレクトリの静的コンテンツを/path/to/project/collected_static/
に収集する管理コマンドがあります。静的コンテンツを提供するために、そのディレクトリのWebサーバをポイントできます。
あらかじめパッケージ化されたライブラリの場合、virtualenvとpipを使用するとよいでしょう。それ以外の場合は、ライブラリをプロジェクトのルートディレクトリの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/
静的リソースを格納するための "/ static /"の使用に関連するものは多少ありません...私はAmazonウェブサービス上のBitnami Django VMにDjangoアプリケーションを配備し、静的リソースが戻ってきて404が見つかりませんでした。私は最終的にこれを次の別名を含むdjango.confファイルにたどった: 別名/静的 "xxx/python2.7/site-packages/django/contrib/admin/static" "/ static/xyz "別の場所にエイリアスされ、失敗しました。誰かが同じ問題に遭遇した場合に備えて、これを書き留めておきたい。 – jarmod