【问题标题】:Can I access url kwargs in django template context processor?我可以在 django 模板上下文处理器中访问 url kwargs 吗?
【发布时间】: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 特定于视图。那么为什么不直接将它们添加到那里的上下文中呢?

标签: python django django-templates


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

    【讨论】:

      猜你喜欢
      • 2017-12-19
      • 2011-01-15
      • 2011-04-20
      • 2015-01-28
      • 2015-11-27
      • 2015-11-01
      • 2023-03-12
      • 1970-01-01
      • 2020-04-12
      相关资源
      最近更新 更多