在不使用上下文处理器的情况下访问 django 1.7 模板中的 URL 参数

Posted

技术标签:

【中文标题】在不使用上下文处理器的情况下访问 django 1.7 模板中的 URL 参数【英文标题】:Access URL parameters in django 1.7 template without using context processors 【发布时间】:2015-01-28 19:11:57 【问题描述】:

http://www.example.com/soe/?param1=val1

这是当前 url,我想访问 django 模板中的变量 param1。 (Django 1.7)

我知道已经有很多线程可以解决这个问题,但它们都在使用 ContextProcessor.(或 render_to_response)

我只是在使用return render(request, template, ),不想使用 ContextProcessors。

解决这个问题的一种方法是我在渲染时传递param1的值,我的意思是

return render(request, template, 'param1': request.GET.get('param1'))

但我只是想知道是否可以在模板本身中访问此变量?因为可能有 10 个参数。

【问题讨论】:

您对上下文处理器有什么看法?它们是这个问题的完美解决方案。 【参考方案1】:

您可以尝试在 django 模板中使用自定义标签。

【讨论】:

能否请您详细说明。如果我可以进入模板本身,我想再次避免创建模板标签。 看看这是否有帮助 request.GET.param1 来吧!我尝试的第一件事就是这个。甚至 GET.param1 因为我们可以在不使用 request.user 的情况下访问 user。不工作 gautam 的建议确实有效,只要您在 django 设置中启用了django.template.context_processors.request【参考方案2】:

以下实际工作......

 request.GET.param1 

...只要您在设置文件中启用了默认的django.template.context_processors.request

DJANGO_CONTEXT_PROCESSORS = (
    # ...any other context processors you want to run
    'django.core.context_processors.request',
)

它所做的只是将请求对象放在您的模板上下文中,然后您可以使用它来访问 url 参数。这正是您正在寻找的功能。见here。

您唯一的其他选择是将参数显式传递给模板,正如您在问题中描述的那样。

【讨论】:

以上是关于在不使用上下文处理器的情况下访问 django 1.7 模板中的 URL 参数的主要内容,如果未能解决你的问题,请参考以下文章

在不使用上下文的情况下访问 Webapp 文件夹中的文件

如何在不知道子类名称的情况下访问 django 中对象的子类?

如何在不定义内容类型或模型的情况下使用 Django 权限?

在不重新加载页面的情况下更新 Django 中的表单值?

如何在不调用渲染函数的情况下访问 Context 的值? [复制]

如何在不包含上下文根名称的情况下使用相对路径?