我可以在 django 模板上下文处理器中访问 url kwargs 吗?
Posted
技术标签:
【中文标题】我可以在 django 模板上下文处理器中访问 url kwargs 吗?【英文标题】:Can I access url kwargs in django template context processor? 【发布时间】:2016-05-25 08:57:27 【问题描述】:urls.py
url(r'^(?i)(?P<slug>[a-zA-Z0-9_]+)$', views_search.index, name='articles'),
context_processor.py
def get_username(request, **kwargs):
print kwargs
slug = kwargs.get('slug')
return
'slug': slug
但是当我运行它时,它打印空字典并且没有任何内容返回到模板。我在设置中的模板上下文处理器中添加了这个。我如何在这里访问 kwargs?
【问题讨论】:
您为什么要这样做? url kwargs 特定于视图。那么为什么不直接将它们添加到那里的上下文中呢? 【参考方案1】:如果一个 url 被解析,ResolverMatch
对象被设置为请求的一个属性:
def get_username(request):
if hasattr(request, 'resolver_match'):
slug = request.resolver_match.kwargs.get('slug')
return 'slug': slug
return
【讨论】:
【参考方案2】:实际上,对于基于类的视图,view
已经在上下文中可用,因此您可以直接在模板中访问kwargs
。在模板中,只需执行以下操作:
view.kwargs.slug
另外,请参阅this SO 答案
【讨论】:
以上是关于我可以在 django 模板上下文处理器中访问 url kwargs 吗?的主要内容,如果未能解决你的问题,请参考以下文章
我可以从 Django 中的模板访问 settings.py 中的常量吗?