我希望能够访问某人在页面模板中放置在 GET 变量中的一些信息(当然是 HTML 转义。)我将如何去做呢?我知道您可以通过视图获取此信息,但在这种情况下,我宁愿在 HTML 端处理它。
2 回答
您可以将该信息从视图传递到模板,就像传递另一个变量一样。渲染模板时,只需添加一个变量并传递request.GET
QueryDict。您将能够访问模板中的所有 GET 参数。
编辑
direct_to_template
自动包含RequestContext(request)
,因此您将能够在设置中使用所有上下文实例。请'django.core.context_processors.request'
在您TEMPLATE_CONTEXT_PROCESSORS
的 settings.py 中添加。之后,您将能够{{ request }}
在模板中使用访问 Django 的 HttpRequest 。示例设置、网址和模板如下:
设置.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"
)
网址.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}}