2012-04-16 10 views
7

これは(Django 1.4リリースノートの)新しいプロジェクト構造です。私がわからない何Django 1.4の静的フォルダ構造ですか?

 
myproject 
|-- manage.py 
|-- myproject 
| |-- __init__.py 
| |-- settings.py 
| |-- urls.py 
| `-- wsgi.py 
`-- polls 
    |-- __init__.py 
    |-- models.py 
    |-- tests.py 
    `-- views.py 

は私が

myproject/myproject/static/(一緒にsettings.py、urls.pyで...)

OR

にSTATIC_ROOTを指している必要がありますかどうかであります最上位ディレクトリmyproject/static(myprojectの隣に、myapp1、myapp2)?

+3

「公式な」単語は何か分かりませんが、トップレベルのディレクトリが理にかなっています。 – agf

答えて

7

STATIC_ROOTは、Pythonのインポートには関係しません。したがって、あなたはまったく依存しています。通常、myproject/static/、したがってos.path.join(PROJECT_ROOT, 'static/')の設定が簡単です。

更新 San4ezが示唆されているように、そしてあなたの構造に応じて、poll/static/pollアプリの静的ファイルを置くこと

# Absolute path to the directory static files should be collected to. 
# Don't put anything in this directory yourself; store your static files 
# in apps' "static/" subdirectories and in STATICFILES_DIRS. 
# Example: "/home/media/media.lawrence.com/static/" 

良いsettings.py内のノート。

2

私はmyproject/static/が静的​​に適していることに同意しますが、アプリ内に画像、css、jsをmyproject/polls/mediaに保存することもできます。あなたは、これはあなたが静的で、あなたのアプリを広めることができますし、あなたのアプリが他のプロジェクト

で自由に使用することができることが、このアプローチの利点を django.contrib.staticfilesアプリを設定する必要があり、コマンドで

python manage.py collectstatic 

をSTATIC_ROOTするmediaから静的なコピーより

+0

css、js、およびimagesはすべてmyproject/myproject/staticのサブフォルダとmyproject/poll/staticのサブフォルダである必要があります。 'media'という名前のフォルダを使うのは危険です。なぜなら、djangoで一般的に使われているイメージやユーザーがアップロードした他のファイルの名前と衝突するからです。 admin静的ファイル(collectstaticの後)で使用されるフォルダです。静的なものを収集して実際にプロダクションサーバー用に収集し、中央のフォルダ(通常は/var/www/www.mysite.com/staticのようなmyprojectフォルダ構造外)から提供します。 – hobs

1

STATIC_ROOTは、staticfiles投稿アプリがすべての静的ファイルを収集して入金するファイルパスです。アイテムを収集する場所です。それだけです。重要なことは、この場所が一時的なストレージであり、主に展開用にアプリケーションをパッケージ化するときに使用されることです。任意のディレクトリから収集するためのアイテムのための

staticfilesアプリ検索がSTATICFILES_DIRSに記載されている余分なファイルパスの場所INSTALLED_APPSにし、ほかに列挙されている任意のアプリケーションでstaticと呼ばれます。

私のプロジェクトでは、deployディレクトリを作成します。このディレクトリには、静的ファイル用に使用するwwwフォルダ、および展開時にのみ使用するさまざまなファイルが作成されます。このディレクトリは、プロジェクトの最上位にあります。

ユーザーが書き込み権限を持つ任意の場所に変数を指すことができます。プロジェクトディレクトリ内にある必要はありません。

関連する問題