【问题标题】:How to add a method to all django templates?如何向所有 django 模板添加方法?
【发布时间】:2012-06-01 03:06:33
【问题描述】:

向我的项目中的所有模板添加类似方法的功能的最佳方式是什么?

我需要的方法如下:

def has_access(user, code):
    return user has access to code

在模板中可以这样使用:

{% if has_access(request.user, 'add-project') %}
    html code here
{% endif %}

自定义过滤器不起作用,因为我没有“过滤”任何东西。此外,据我所知,自定义上下文处理器不接受额外参数。

不确定如何在 django 中执行此操作。

【问题讨论】:

  • 需要更多信息。特别是,你想要达到什么目的? “有权访问代码”是什么意思?用户可以在浏览器中访问视图吗?
  • 取决于code 是/做什么,这可能是custom middleware 可以解决的问题。

标签: django django-templates


【解决方案1】:

自定义过滤器实际上可以工作:

{{ user|has_access:code }}

自定义模板标签可以工作:

{% has_access user code %}

中间件可以工作......但如果没有更多信息,很难说解决您的问题的最佳方法是什么。

【讨论】:

  • 可以在 if 语句中使用其中任何一个吗?
  • @Ramin,过滤器可以用了。 {% if user|has_access:code %}
猜你喜欢
  • 2017-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-19
  • 2020-11-05
  • 1970-01-01
  • 1970-01-01
  • 2015-04-19
相关资源
最近更新 更多