0

staticfilesが管理者の静的ファイルを にコピーしないことに気付きましたSTATIC_ROOTdjango.contrib.staticfilesにインクルードするとINSTALLED_APPS、管理者の静的ファイル(および他のすべてのファイル)が自動的にコピーされるという印象を受けました(そして、今はその参照が見つかりません)。しかし、そうではないようです。

SOに関する12の関連する質問を参照すると、受け入れられた方法は、次のようvirtualenvに、NGINXへの管理者パスへのハードコードされたパスを含めることです

location /static/admin {
  root   /webapps/hello_django/lib/python2.7/site-packages/django/contrib/admin/;
}

しかし、これは私にはかなり汚いようです。

また、ファインダーが私のために働いていることにも言及する必要があります。

 $ ./manage.py findstatic admin
   Found 'admin' here:
   /<path to venv>/lib/python2.7/site-packages/django/contrib/admin/static/admin

ここで何か不足していますか?

4

2 に答える 2

1

ですべての設定がそのように設定されているかどうかを確認してくださいsettings.py。静的ファイルはstatic、プロジェクトのルート フォルダーの dir の下にあると思います。

import os 
import sys

STATIC_ROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'static/')
STATIC_URL = '/static/'
ADMIN_MEDIA_PREFIX = '/static/admin/'

STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)

INSTALLED_APPS = (
# default apps
'django.contrib.staticfiles',
# etc
)
STATICFILES_DIRS = ()

nginx 構成:

 location /static {
        alias /path_to_your_project/static;
        access_log   off;
        expires      max;
 }
于 2013-11-01T23:25:29.653 に答える
0

settings.py私の分割方法に微妙な問題があったことがわかりました。Google からここに来る人のために、私はdeploydjango.comの分割戦略に従っていましたsettings.pyROOT_DIR、プロジェクトの観点から定義されていました。つまり、次の構造です。

$ tree -L 2
.
├── static
├── apps
└── project
    ├── __init__.py
    ├── settings
    │   ├── __init__.py
    │   ├── base.py
    │   ├── dev.py
    │   └── prod.py
    ├── urls.py
    └── wsgi.py

以下の設定で

STATICFILES_DIRS = (
    ABS_PATH('apps', 'example_app', 'static'),
)

ROOT_DIR設定されproject/ます。また、ABS_PATH関数は に基づいてパスを定義するROOT_DIRため、apps/フォルダーは表示されません (先頭に を付ける必要があります'..')。

解決策はもちろん、フォルダーapps/をフォルダー内に移動project/することです。これは理にかなっています。つまり、正しい構造は次のとおりです。

$ tree -L 2
.
├── static
└── project_name
    ├── __init__.py
    ├── apps                # <-- apps moved here
    │   └── example_app
    ├── settings
    │   ├── __init__.py
    │   ├── base.py
    │   ├── dev.py
    │   └── prod.py
    ├── urls.py
    └── wsgi.py

この問題は自分のやり方に大きく関係していることに気付きましたが、この構造を「ベストプラクティス」と見なす人もいるので (同意しない人もいますが)、これが誰かの助けになることを願っています!

于 2013-11-11T12:41:26.487 に答える