違いはわかりませんが、どちらも機能しているようです。私はグーグルで回ったが、それらはほとんど同じもののようだ。好奇心から、人々はフィールドでどれを使用しますか?
私はそれを読みましたが、いつどのを使用するのか、そして現場のどの人が使用するのかまだわかりません。鉱山はそれらの両方のために働きます。最初は静的フォルダをロードしていると思いましたが、静的ファイルでも機能します... –
現時点(Django 1.9以前)では、{% load staticfiles %}
は、組み込みのDjango.core.static
よりも多くの機能を備えたcontribアプリからstatic
テンプレートタグを読み込みます。
最も重要な違いは、staticfiles
がCDNに保存されているファイルを管理できることです。これは、そのリゾルバーがハッシュなどを管理できるためです。 core.static
は、静的ファイル名にSTATIC_URL
を追加するだけです。これは、ファイルを処理している場合は十分ではありません(たとえば、リリース間でキャッシュをクリアするためにmd5ハッシュを追加します)
この違いは、非ローカルストレージファイルの管理がDjangoのコアパッケージに含まれることに専念していなかったという事実によるものですが、公式のcontribパッケージとして実装される多くの開発者にとっては依然として有用でした。したがって、staticfiles
を使い始めた場合は、テンプレート内ですべて使用することを忘れないでください。ただし、たとえば Media
クラスを使用 の場合、いくつかの問題が発生する可能性があります。そのため、開発者がDjango.contrib.staticfiles
にINSTALLED_APPS
を持っているかどうかに関係なく、これら2つのテンプレートタグを1つにマージし、異なる動作を使用することにしました。か否か。
Django 1.10以降 (また Djangoトラッカー のチケットを参照))から、{% load static %}
は内部でstaticfiles
を使用しますアクティブ化された場合(通常はデフォルトの動作を維持します)、混乱を避けるためにcontribパッケージのtemplatetagは非推奨になります。
TL; DR
staticfiles
は、非ローカルストレージを管理できるテンプレートタグをロードします。ここでstatic
できません(または簡単ではありません);contrib.staticfiles
アプリはまだ存在しますが、そのテンプレートタグは削除されます{% static %}
テンプレートタグのみが残ります;{% load staticfiles %}
は削除されました。今のところ、関連するcontribアプリを使用する場合(そしてそれを使用する理由がわかっている場合)はDjango 1.10まで)staticfiles
templatetagsを使用し、それ以外の場合はstatic
を使用します。 。
このトピックに関する「Django/contrib/staticfiles/templatetags /staticfiles.py」内の興味深いコード:
import warnings
from Django import template
from Django.templatetags.static import (
do_static as _do_static, static as _static,
)
from Django.utils.deprecation import RemovedInDjango30Warning
register = template.Library()
def static(path):
warnings.warn(
'Django.contrib.staticfiles.templatetags.static() is deprecated in '
'favor of Django.templatetags.static.static().',
RemovedInDjango30Warning,
stacklevel=2,
)
return _static(path)
@register.tag('static')
def do_static(parser, token):
warnings.warn(
'{% load staticfiles %} is deprecated in favor of {% load static %}.',
RemovedInDjango30Warning,
)
return _do_static(parser, token)
したがって、{%load staticfiles%}がDjango 3リリース:)の後に削除されると思い込んでください。