質問の最も重要な部分はトピックです。
どのタグがどの場合に最適かと思います。さらに...私もコードを見つけましsettings.STATIC_URL
た。{{STATIC_URL}}
テンプレートにている。
少し混乱しています。
質問の最も重要な部分はトピックです。
どのタグがどの場合に最適かと思います。さらに...私もコードを見つけましsettings.STATIC_URL
た。{{STATIC_URL}}
テンプレートにている。
少し混乱しています。
回答:
組み込みのstatic
テンプレートタグ「に保存されている静的ファイルへのリンクSTATIC_ROOT
」。
staticfiles
contribのアプリケーションのstatic
テンプレートタグは、「構成された使用していますSTATICFILES_STORAGE
「ファイルを展開する非ローカルストレージバックエンドを使用する場合に特に便利」で、指定した相対パスの完全なURLを作成するためにストレージを」。
組み込みstatic
テンプレートタグのドキュメント(上記にリンク)には、「クラウドサービスを使用して静的ファイルを提供するなどの高度なユースケースがある場合」にstaticfiles
contribアプリのstatic
テンプレートタグを使用するように記載されており、次の例が示されていますそうする:
{% load static from staticfiles %}
<img src="{% static "images/hi.jpg" %}" alt="Hi!" />
あなたは使うことができ{% load staticfiles %}
なく、{% load static from staticfiles %}
あなたがしたい場合は、後者はより明示的です。
{% load static %}
ます。「以前のバージョンでは{% load static from staticfiles %}
、STATICFILES_STORAGEで定義されたストレージからファイルを提供するためにテンプレートで使用する必要がありました。これは不要になりました。」
{% load static %}
。
どのような違いがあるのかはわかりませんが、ユースケースの違いを見つけました(Apache、Python 3.4のwsgiを介して実行されるdjango 1.9.1を使用)。私のアプリでImageFields
は、データベースにいくつかの画像があります。テンプレートでこのようなコードを使用する場合:
<a href="object-{{object.id}}"><img src="{% static object.image %}" height="200px"></a>
次に、私がを使用すると{% load static %}
、djangoはTypeError
(Cannot mix str and non-str arguments
)をスローします。これはおそらく、object.image
が文字列ではないためです。これはImageField
、後の段階で文字列に変換されるです。ただし、使用する場合{% load staticfiles %}
ない、そのようなエラーは発生ません。
残念ながら、問題のデバッグに何時間も費やした結果、この違いを発見しました。最初のオプションを使用するときの回避策を見つけることができました。つまり、次のようにオブジェクトに文字列コンバーターメソッドを追加しました。
#image string
def image_str(self):
return str(self.image)
この知識が誰かに役立つことを願っています。
Djangoのドキュメントは今好む {% load static %}
。
{% load staticfiles %}
動作しますが、私はそれが非難されていると思います。
https://docs.djangoproject.com/en/dev/ref/templates/builtins/#static
わかりやすい説明があるdocsを参照してください。実際、{% static %}
テンプレートタグはSTATICFILE_STORAGEの場所を知っています
ドキュメントが言うように:
{% load static from staticfiles %} <img src="{% static "images/hi.jpg" %}" alt="Hi!" /> The previous example is equal to calling the url method of an instance of STATICFILES_STORAGE with "images/hi.jpg".
これは、クラウドサービスまたはCDNからの静的ファイルの提供で説明されているように、非ローカルストレージバックエンドを使用してファイルをデプロイする場合に特に便利です。
静的URLを表示せずに取得する場合は、少し異なる呼び出しを使用できます。
{% load static from staticfiles %} {% static "images/hi.jpg" as myphoto %} <img src="{{ myphoto }}" alt="Hi!" />
それが役に立てば幸い!!
{% load static %}
、{% load staticfiles %}
、{{STATIC_URL}}
...と私は違いが何であるかを知らない知っている{% load static %}
と{% load static from staticfiles %}