8

我希望能够访问某人在页面模板中放置在 GET 变量中的一些信息(当然是 HTML 转义。)我将如何去做呢?我知道您可以通过视图获取此信息,但在这种情况下,我宁愿在 HTML 端处理它。

4

2 回答 2

12

您可以将该信息从视图传递到模板,就像传递另一个变量一样。渲染模板时,只需添加一个变量并传递request.GETQueryDict。您将能够访问模板中的所有 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

于 2012-12-15T19:05:37.667 回答
2

在新的 Django 中,您可以直接在模板中使用,例如:

如果在 view.py 中使用 request.POST['name'] 发布请求,则可以在模板中使用:

{{request.POST.name}}

如果在模板中获取请求,您可以使用:

{{request.GET.name}}
于 2021-02-24T01:02:01.780 回答