【问题标题】:Access URL parameters in django 1.7 template without using context processors在不使用上下文处理器的情况下访问 django 1.7 模板中的 URL 参数
【发布时间】: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 个参数。

【问题讨论】:

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

标签: python django python-2.7 django-templates django-views


【解决方案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

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

【讨论】:

    猜你喜欢
    • 2012-06-28
    • 2016-05-25
    • 2015-11-27
    • 2017-04-10
    • 2011-01-15
    • 2015-11-01
    • 2018-06-03
    • 2012-06-05
    • 1970-01-01
    相关资源
    最近更新 更多