元の投稿を見ると、ページを 2 つの異なる角度からレンダリングしているように見えます。
まず、{% load staticfiles %}
staticfiles モジュールに関連付けられたテンプレートタグをロードするものがあります。次に、参照しているリンク要素内で、{{ STATIC_URL }}
コンテキストを介して展開されます。
このことから、次の 2 つの行動方針のいずれかをお勧めします。
1 - テンプレートにロードした staticfiles モジュールと templatetags を利用します。
これを行うには、link 要素を次のように変更する必要があります。
<link rel="stylesheet" href="{% static "style.css" %}" type="text/css" media="screen" />
この例では{{ STATIC_URL }}
、 を{% static %}
templatetag に置き換えたことに注意してください。templatetagは{% static %}
、静的 URL を前に付けるファイルである引数を取り、完全な文字列に展開します。
2 - コンテキストでレンダリングするようにビューを変更して、コンテキストを利用します。
変数は、{{ STATIC_URL }}
リクエスト コンテキストを介して使用可能になります。便利な変数がいくつかあり、それらを利用したい場合に拡張するために頼ることができます。問題は、コンテキストを使用してテンプレートをレンダリングする必要があることです。これは、1 つ以上のビューを変更する必要がある可能性があることを意味します。
例として、コンテキストなしでレンダリングされる非常に単純なビューは次のようになります。
from django.shortcuts import render_to_response
def index_without_context(request):
return render_to_response("index.html")
コンテキストでレンダリングされた同じ非常に単純なビューは次のようになります。
from django.shortcuts import render_to_response
from django.templates import RequestContext
def index_with_context(request):
return render_to_response("index.html",
context_instance=RequestContext(request))
上で述べたように、テンプレートを でレンダリングすると、RequestContext
他の変数などを取得できるため、非常に有効なオプションです。
最終的には、静的ファイルが静的 URL を正しくレンダリングすることを保証するロジックをどこに保持するかによって異なります。{% load staticfiles %}
テンプレート自体の内部にそのロジックが必要な場合は、このアプローチを採用して{% static %}
テンプレート タグを使用することをお勧めします。変数を利用する{{ STATIC_URL }}
だけでなく、他の潜在的に有用な変数を利用したい場合は、ビューを RequestContext でレンダリングするように変更することをお勧めします。
まさにこのトピックに関する Django ドキュメント セクションで、コンテキスト プロセッサまたはテンプレート タグの使用の違いについて詳しく読むことができます。
https://docs.djangoproject.com/en/1.4/howto/static-files/#referring-to-static-files-in-templates