【问题标题】:Can custom Django filters access request.user?自定义 Django 过滤器可以访问 request.user 吗?
【发布时间】:2011-10-04 17:41:24
【问题描述】:

是否可以从自定义模板过滤器访问当前的User(即模板上下文中的user)?

显然我可以将用户作为参数传入,但如果可以只获取当前用户,那就更方便了。

【问题讨论】:

    标签: django django-templates django-template-filters


    【解决方案1】:

    Django 过滤器没有对调用它们的上下文进行任何特殊访问,它们只是普通的旧函数。

    你需要传入任何你想在函数中使用的东西。

    https://docs.djangoproject.com/en/dev/howto/custom-template-tags/

    【讨论】:

    • 伤心。我想我总是可以用中间件或模板上下文处理器做一些事情来设置一个本地线程,但是......糟糕。
    • 虽然第一感觉是 PITA,但使用@register.simple_tag(takes_context=True) 替换过滤器与模板标签相当容易
    【解决方案2】:

    在这里查看我的答案:

    https://stackoverflow.com/a/28098279/201945

    但是,简而言之,您可以从自定义过滤器中访问context,方法是在且仅在渲染期间调用过滤器时从调用堆栈中提取它。

    诚然,这是一个随意的解决方案。买者自负。

    【讨论】:

      猜你喜欢
      • 2010-12-02
      • 2018-05-06
      • 2010-12-05
      • 2016-07-01
      • 2021-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多