django教室(5)静的ファイル


サーバによって生成されたHTMLファイルに加えて、Webアプリケーションは一般的に、画像ファイル、JavaScriptスクリプト、CSSスタイルシートなどの他の必要なファイルを提供して、ユーザーに完全なWebサイトを提示する必要があります.Djangoでは、これらのファイルを「静的ファイル」と呼びます.
小型プロジェクトでは、Webサーバがアクセスできる場所に置くことができるので、これは大きな問題ではありません.しかし、大きなプロジェクト、特に複数のアプリケーションからなるプロジェクトでは、各アプリケーションが提供する複数の静的ファイルの集合を処理することが難しくなり始めます.
これはまさにdjangoです.contrib.staticfilesの用途:各アプリケーション(および指定した場所)の静的ファイルを別の場所に収集し、オンラインで簡単にメンテナンスできます.
アプリケーションの外観をカスタマイズ
まずpollsにstaticディレクトリを作成します.Djangoは、Djangoがpolls/templates/で対応するテンプレートファイルを探す方法と一致する静的ファイルを検索します.
DjangoのSTATICFILES_FINDERS設定には、さまざまなソースから静的ファイルを見つける方法を知っているルックアップリストが含まれています.デフォルトの1つは、各INSTALLED_にあるAppDirectoriesFinderです.APPSの下で「static」サブディレクトリを検索します.pollsで作成したばかりのように.管理サイトも、静的ファイルに同じディレクトリ構造を使用します.
作成したstaticディレクトリで、別のディレクトリpollsを作成し、その下にファイルstyleを作成します.css.言い換えれば、あなたのスタイルシートはpolls/static/polls/styleにあるはずです.css.AppDirectoriesFinder静的ファイルファインダの動作により、polls/styleを使用できます.cssはDjangoでこの静的ファイルにアクセスし、テンプレートにどのようにアクセスするかのパスと似ています.
静的ファイルのネーミングスペース
テンプレートと同様に、別のpollsサブディレクトリを作成するのではなくpolls/staticに静的ファイルを直接置くことができますが、実際には悪いアイデアです.Djangoは、見つかった最初の静的ファイルのファイル名を使用します.異なるアプリケーションに同じ名前の静的ファイルが2つある場合、Djangoはそれらを区別できません.Djangoがどちらを使用すべきかを教える必要があります.最も簡単な方法は、名前空間を追加することです.すなわち、これらの静的ファイルは、それらが存在するアプリケーションの名前で命名された別のディレクトリの下に配置される. 
次のコードをスタイルシートに挿入します(polls/static/polls/style.css):
polls/static/polls/style.css
li a {
    color: green;}

次はpolls/templates/polls/index.htmlの先頭には、次の内容が追加されます.
polls/templates/polls/index.html
{% load staticfiles %}

{%load staticfiles%}staticfilesテンプレートライブラリから{%static%}テンプレートラベルをロードします.{%static%}テンプレートラベルは、静的ファイルの絶対URLを生成します.
これが、開発中に静的ファイルに必要なすべての処理です.再ロードhttp://localhost:8000/polls/ああ、Questionのハイパーリンクが緑(Djangoのスタイル!)になっているのが見えるはずですが、これは、スタイルシートが正常にインポートされたことを意味します.
背景画像を追加
次に、画像を保存するサブディレクトリを作成します.polls/static/polls/ディレクトリにp_を作成w_picpathsサブディレクトリ.このディレクトリに、画像backgroundを1枚入れます.gif.言い換えれば、polls/static/polls/p_にあなたの画像を置きます.w_picpaths/background.gif.
次に、スタイルシートに追加します(polls/static/polls/style.css):
polls/static/polls/style.css
body {
    background: white url("p_w_picpaths/background.gif") no-repeat right bottom;}

再ロードhttp://localhost:8000/polls/、画面の右下にロードされた背景画像が表示されます.
警告:
もちろん、{%static%}テンプレートラベルは、Djangoによって生成されないため、スタイルシートなどの静的ファイルでは使用できません.相対パスを使用して静的ファイルを相互にリンクする必要があります.これにより、STATIC_を変更することができます.URL(staticテンプレートラベルは、大量の静的ファイルのパスを同時に変更することなくURLsを生成するために使用されます.
ここにはいくつかの基礎が必要です.静的ファイル設定の詳細とフレームワークに含まれる他のセクションについては、静的ファイルhowtoと静的ファイルリファレンスを参照してください.静的ファイルを配備して、実際のサーバで静的ファイルを使用する方法について説明します.
次は?
初心者のチュートリアルはこれで終わります.その間、ドキュメントの構造をどのように表示するか、関連情報の検索方法を理解したい場合があります.
Pythonパッケージのテクノロジーに精通しており、投票アプリケーションを「再利用可能なアプリケーション」にする方法に興味がある場合は、高度なチュートリアルを参照してください.再利用可能なアプリケーションの作成方法.