17

違いはわかりませんが、どちらも機能しているようです。私はグーグルで調べましたが、それらはほとんど同じもののようです。好奇心から、人々はフィールドでどちらを使用しますか?

私はそれを読みましたが、いつどれを使用するか、現場の人々がどれを使用するかはまだわかりません. 私はそれらの両方で機能します。最初は静的フォルダーをロードしていると思っていましたが、静的ファイルでも機能します... –</p>

4

2 に答える 2

28

今のところ (Django 1.9 以前)は、組み込みの よりも多くの機能を持つ contrib アプリから templatetag を{% load staticfiles %}読み込みます。staticdjango.core.static

最も重要な違いはstaticfiles、たとえばリゾルバーがハッシュを管理できるため、CDN に保存されているファイルを管理できることです。ファイルを処理している場合は、静的なファイル名にcore.static追加するだけでは不十分です (たとえば、リリース間でキャッシュをクリアするために md5 ハッシュを追加する)STATIC_URL

この違いは、非ローカル ストレージ ファイルの管理が Django のコア パッケージに含まれる専用のものではなく、公式の contrib パッケージとして実装されることで多くの開発者にとって有用であったという事実によるものです。したがって、 を使い始めた場合staticfilesは、テンプレートのすべてで使用することを覚えておく必要がありました。ただし、クラスを使用Mediaする場合など、いくつかの問題が発生する可能性があるため、これら2つのテンプレートタグを1つにマージし、開発者が持っているかどうかに関係なく異なる動作を使用することが決定されましdjango.contrib.staticfilesINSTALLED_APPS.

Django 1.10 以降( Django tracker のチケットも参照) は、有効化されている場合は内部的{% load static %}に使用され(それ以外の場合はデフォルトの動作を維持します)、contrib パッケージの templatetag は混乱を避けるために廃止されます。staticfiles

TL;DR

  • Django 1.10 より前:staticfiles非ローカル ストレージを管理staticできない (または容易ではない) テンプレートタグをロードします。
  • Django 1.10 から: contrib.staticfilesapp はまだ存在しますが、その templatetags は削除され、{% static %}templatetags のみが残ります。
  • Django 2.0 から(私は信じています):{% load staticfiles %}は削除されました。

今のところ、staticfilesDjango 1.10 まで関連する contrib アプリを使用している場合 (そしてなぜそれを使用しているかがわかっている場合) は templatetags を使用し、それ以外の場合はstatic.

于 2015-12-22T20:33:38.947 に答える