I want to be able to access a bit of information that someone places in a GET variable right in the template of a page (HTML escaped, of course.) How would I go about doing this? I know you can grab this information with views, but in this case, I'd rather handle it HTML side.
2 に答える
別の変数を渡すのと同じように、その情報をビューからテンプレートに渡すことができます。テンプレートをレンダリングするときは、変数を追加してrequest.GET
QueryDictを渡すだけです。テンプレート内のすべてのGETパラメータにアクセスできるようになります。
編集
direct_to_template
自動的に含まれるRequestContext(request)
ため、設定ですべてのコンテキストインスタンスを使用できます。settings.pyに追加'django.core.context_processors.request'
してください。その後、テンプレートでTEMPLATE_CONTEXT_PROCESSORS
アクセスDjangoのHttpRequestを使用できるようになります。{{ request }}
設定例、URL、テンプレートは以下のとおりです。
settings.py
TEMPLATE_CONTEXT_PROCESSORS = (
'django.core.context_processors.request',
# these are the default values from django. I am not sure whether they
# are overritten when setting this variable, so I am including them "django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.static",
"django.core.context_processors.tz",
"django.contrib.messages.context_processors.messages"
)
urls.py
urlpatterns = patterns('django.views.generic.simple',
url(r'^about/$', 'direct_to_template', {'template':
'about.html'}),
)
about.html
Your request is: <br /><br />
{{ request.GET }}
トピックに関するドキュメントも参照してください。
https://docs.djangoproject.com/en/dev/ref/templates/api/#subclassing-context-requestcontext
https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-TEMPLATE_CONTEXT_PROCESSORS
新しいDjangoでは、次のようなテンプレートで直接使用できます。
view.pyでrequest.POST['name']を使用してリクエストを送信する場合、テンプレートで次を使用できます。
{{request.POST.name}}
テンプレートでリクエストを取得する場合は、次を使用できます。
{{request.GET.name}}