ホームページ  >  記事  >  バックエンド開発  >  Django の STATIC_ROOT、STATIC_URL、STATICFILES_DIRS の簡単な分析

Django の STATIC_ROOT、STATIC_URL、STATICFILES_DIRS の簡単な分析

不言
不言オリジナル
2018-05-08 11:49:071560ブラウズ

この記事では、Django の STATIC_ROOT、STATIC_URL、STATICFILES_DIRS に関する関連情報をサンプル コードを通じて詳しく紹介します。学習や仕事に役立つ情報が含まれています。必要な方は参加してください。見てみましょう

前書き

この記事では主に Django の STATIC_ROOT、STATIC_URL、STATICFILES_DIRS に関連する内容を紹介し、参考と学習のために共有します。詳細な紹介バーをご覧ください。

詳細は次のとおりです:

まず、静的ファイルを構成し、次のコード行をsetting.pyに追加します:

settings.py

# the settings above
# STATIC SETTINGS
STATIC_URL = '/static/'
# BASE_DIR 是项目的绝对地址
STATIC_ROOT = os.path.join(BASE_DIR, 'collect_static')
#以下不是必须的
STATICFILES_DIRS = (
 os.path.join(BASE_DIR, 'common_static'),
)

1.STATIC_ROOT

STATIC_ROOT は、静的ファイル (pyhtonmanage.pycollectstatic) をデプロイするときにすべての静的ファイルが集約されるディレクトリです。ここでは、たとえば、私のプロジェクト mysite は /home/mysite/ です。 STATIC_ROOT は /home/mysite /collect_static/ です

プロジェクトをデプロイするときに、ターミナルに次のように入力します:

python manage.py collectstatic

django はすべての静的ファイルを STATIC_ROOT フォルダーにコピーします

2。 STATIC_ROOT は実際の状況では、静的ファイルの一般的な配置場所は 2 つあります。1 つは、各アプリに新しい静的フォルダーを作成し、その中に静的ファイルを配置することです。静的ファイルの読み込み。たとえば、テンプレートで静的ファイルを使用したい場合、Django は各アプリの静的フォルダーを自動的に検索します (そのため、間違ったフォルダー名を書き込まないでください。そうしないと、Django はロードできなくなります)フォルダーを見つけるため)

2. 別のオプションは、すべてのアプリ ファイルの外にパブリック フォルダーを作成することです。一部の静的ファイルは特定のアプリに固有ではないため、管理を容易にするためにパブリック フォルダーに置くことができます。パブリック静的ファイル フォルダーは管理しやすい方法に過ぎませんが、必須ではありません。最終的にはすべての静的ファイルが STATIC_ROOT に存在するため、アプリは静的ファイルを複数のアプリに適用できます。 django は、アプリの外部のパブリック フォルダーにいくつかの静的ファイルを配置していることを知っているため、STATICFILES_DIRS を設定する必要があります

STATICFILES_DIRS = (
 os.path.join(BASE_DIR, 'common_static'),
)

STATICFILES_DIRS は、まず STATICFILES_DIRS で静的ファイルを探し、次にそれぞれの静的フォルダーに移動するように django に指示します。 (Django は遅延的な方法で静的ファイルを検索することに注意してください。最初のファイルが見つかると検索を停止します)


3.STATIC_URL

それでは今のところはこれで、静的ファイルのメカニズムは次のとおりです。は動作しますが、URL を使用してプロジェクト内の静的ファイルに直接アクセスできますか?という質問があります。答えは間違いなく「はい」ですが、ブラウザーでアクセスしているため、静的ファイルをローカルに入力できないことに注意してください。絶対アドレス、たとえば、私の写真の 1 つのローカル アドレスは /home/mysite/common_static/myapp/photo.png です

したがって、他の人がブラウザに直接入力することは不可能です:

http:/ /192.168.1.2:8000/home/mysite/common_static/myapp/photo.png

このようにして、ブラウザはエラーを報告しますが、そのようなページは存在しません

それでは、Django はどのようにしてブラウザが静的ページにアクセスできるようにするのでしょうか前に述べたように、サーバーのローカル アドレスに直接アクセスすることはできないため、Django は STATIC_URL を使用してブラウザが次のような静的ファイルに直接アクセスできるようにする必要があります。
STATIC_URL = '/static/'


その後、ブラウザを使用できます:


http://192.168.1.2:8000/static/common_static/myapp/photo.png と入力します


これは、/home/mysite/common_static にアクセスするのと同じです/myap/photo.png


そのため、サーバー上で閲覧中に、プレフィックス STATIC_URL の特定の内容を使用して STATIC_ROOT をマップします。

HTTP://192.168.1.2:8000/static は、ローカル アドレスの STATIC_ROOT に相当します

関連する推奨事項:

Django で Ajax を使用する方法


Django のフォーム ページが更新後に自動的に送信されないようにする方法



以上がDjango の STATIC_ROOT、STATIC_URL、STATICFILES_DIRS の簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。