、 Djangoの静的な設定ファイルの原則
静的な設定ファイルは、ユーザーが静的ファイルのリターンを見つけるために、Djangoのサーバを要求できるようにすることです。
私たちは、最初のいくつかの概念を理解する必要があります。
- メディアファイル:ユーザーがアップロードしたファイル
- 静的ファイル:CSS、JS、画像など
- 開発環境:使用ジャンゴビルトインサーバー静的ファイル
- 本番環境:apache2の/ nginxのサーバーの静的ファイルマップを使用して
静的ファイルは、Webサーバプロセスに引き渡さ、ジャンゴ自体は静的ファイルではありません。単純な処理ロジックは(nginxの例では)以下の通りであります:
例をnginxのように、その最初のWebサーバーに応じてURI ----->配置ルールを要求し、主請求項の位置は、nginxのが配置されている。#Confレーン
| ---------->静的ファイルであれば、直接nginxのを処理することにより
| ---------->それは治療ジャンゴと呼ばれていない場合は、Djangoの一致規則れurls.pyに従って
これらは、Webサーバーの方法に対処するために配備され、開発を容易にするために、Djangoは静的ファイルのための開発環境を処理するためのメカニズムを提供し、この方法は次のとおりです。
INSTALLED_APPS 'django.contrib.staticfiles' に加え1、
urls.pyに添加した2
settings.DEBUG場合: ?。urlpatterns + =パターン( ''、URL(R '^メディア/(P <パス> *)$'、 'django.views.static.serve'、{ 'DOCUMENT_ROOT':settings.MEDIA_ROOT })、 URL(R '^静的/(P <パス> *?)$'、 'django.views.static.serve' { 'DOCUMENT_ROOT':settings.STATIC_ROOT})、)
3、あなたは開発段階で直接静的ファイルを使用することができます。
二、 MEDIA_ROOTとMEDIA_URL
静的ファイルの取り扱いものように定義されることが多いジャンゴで、混乱しているSTATIC MEDIAカテゴリを、含まれています。
MEDIAは:そのような内部モデルFileFieldになどのファイルを、アップロードするユーザーを指し、のImageFieldは、ファイルをアップロードしました。あなたは#1 MEDIA_ROOT = C定義する場合:ABC \ \一時\メディア:\一時\メディアを、そして= models.FileField(upload_to = "ABCは/")ファイルをアップロードするためにCに保存されますファイル
ブログのクラス(models.Model): タイトル= models.CharField(64 MAX_LENGTH =) 写真= models.ImageField(upload_to = "写真") Cにアップロードする#アップロード写真:\ tempに\メディア\写真 、 およびテンプレートでファイルを表示するには、その後の書き込み
ローカルパスを設定した設定でMEDIA_ROOTは、通常はこのように書かれている、絶対パスでなければなりません。
BASE_DIR = os.path.abspath(os.path.dirname(__ FILE__)) MEDIA_ROOT = os.path.join(BASE_DIR、 'メディア/')。置き換える( '\\'、 '/')
MEDIA_URLは、たとえば、ブラウザからのアクセスのアドレスプレフィックスであります:
= C MEDIA_ROOT:TEMP \ \メディア\フォト MEDIA_URL = "/データ/" :メディア処理ジャンゴによって処理された開発段階の間、# #の訪問のhttp://localhost/data/abc/a.pngは、Cを訪問することである:\ tempに\メディア\写真\ ABC \ A.pngの テンプレート内の#は書くために、<IMG SRC = "{{MEDIA_URL }} ABC / a.png">
展開段階では最大の違いは、Webサーバは、例えば、メディアファイルの#のnginxのにアクセスすることを可能にするためには、Webサーバーを設定する必要がありますので、メディアファイルを処理するために、Webサーバーをできるように持っていることを、あなたは内部nginx.confにすることができます:
場所〜/メディア/ { ルート/温度/ ブレーク。 }
Djangoのnginxの中で参照することができ展開する方法に関する具体的な情報。
三、STATIC_ROOTとSTATIC_URL
STATICは主に、JS、CSSのようにあなたが設定STATIC_ROOTを設定することができますし、STATIC_URL、構成やMEDIA_ROOTは同じですが、注意が必要なファイルの画像を、参照します。
静的ファイルは、一般的に次の場所に格納されています。
1. STATIC_ROOT:提供された設定では、一般的にいくつかの共通のJS、CSS、画像などを置くために使用します。
2、各アプリのファイルフォルダは静的フォルダを作成するために、そしてあなたがcollectstaticを実行するときに、DjangoはINSTALL_APPSに静的フォルダ内のすべてのアプリを横断するかもしれ静的フォルダのアプリは、STATIC_ROOTに内のすべてのファイルをコピーします。あなたは、再利用可能なアプリケーションを構築したいのであれば、あなたは、静的なフォルダに必要な静的ファイルアプリをしたいです。これは、プロジェクトが、その後アプリ、CSS、画像や静的ドキュメントのさまざまなアプリに散在しているこのプロジェクトのために必要なその他の静的ファイルの多くを参照している、より一般的な管理アプリケーションです。公開するとき、我々はSTATIC_ROOTある場所に散らばっ静的ファイルを収集する必要があります。
3、静的ファイルもSTATICFILES_DIRSは、追加の静的ファイルの保存場所を指定するように構成することができます。
STATIC_URL MEDIA_URL同様の意味。
注1:フロントエンドの導入には影響しません、あなたのバックエンドを変更するためには、フロントエンドは、大規模な変更を避けるために
STATIC_URL =「/静的/」#参照名の STATICFILES_DIRS =( os.path.join(BASE_DIR、「静」)#本当の名前、そのフォルダの実際の名前です ) の名前とマップの実際の名前への参照を#django、参照のみ参照名に基づいて実際の名前を見つけることができません <「/ jQueryの-3.1.1.jsに/静」スクリプトSRC =>の位に</ SCRIPT> #------ -----エラーが直接使用することはできません、= '/ /静的' STATIC_URL必要があります: #を<SCRIPT SRC = "/静的/ jQueryの-3.1.1.js"> </ SCRIPT>
(静的ファイルを呼び出し、別のアプリで記述された静フォルダ)注2:
STATIC_URL = '/静的/' STATICFILES_DIRS =( ('こんにちは'、os.path.join(BASE_DIR、 "app01"、 "静"))、 ) #<SCRIPT SRC = "/静的/ハロー/ jqueryの-1.8.2 .min.js "> </ SCRIPT>
注3:テンプレート言語を使用します
STATIC_URL = '/静的/' {%負荷staticfilesの%} <スクリプトSRC = {%静的"jqueryの-1.8.2.min.js" %}> </ SCRIPT>