【问题标题】:How to make django-rules work in templates?如何使 django-rules 在模板中工作?
【发布时间】:2019-08-11 12:00:58
【问题描述】:

使用Django-Rules 时,您可以在视图中检查权限。但我的总是返回假。下面示例中的代码始终显示“bar”,但必须显示“foo”:

  {% extends 'home/base.html' %}
  {% load rules %}
  {% has_perm 'anApp.can_access_something' user as can_access_something %}

  {% block content %}
      {% if can_access_something %}
          <p>foo</p>
      {% else %}
          <p>bar</p>
      {% endif %}
      ...
  {% endblock %}

我的 rules.py 看起来像这样:

@rules.predicate
def testrule(user):
    return True

rules.add_perm('anApp.can_access_something', testrule)

所以总是会返回 true。

【问题讨论】:

    标签: django permissions django-rules


    【解决方案1】:

    以下行必须在一个块中:

    {% has_perm 'anApp.can_access_something' user as can_access_something %}
    

    这将正确显示“foo”:

    {% extends 'home/base.html' %}
    {% load rules %}
    
    {% block content %}
        {% has_perm 'anApp.can_access_something' user as can_access_something %}
        {% if can_access_something %}
            <p>something</p>
        {% else %}
            <p>something else</p>
        {% endif %}
        ...
    {% endblock %}
    

    【讨论】:

      猜你喜欢
      • 2020-07-14
      • 1970-01-01
      • 2015-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-17
      • 2023-04-04
      相关资源
      最近更新 更多