【问题标题】:Checking for permission in django template not working检查 django 模板中的权限不起作用
【发布时间】:2013-06-02 20:52:34
【问题描述】:

我想验证模板中的用户权限。如果用户有权限,他/她将能够访问该模板。编写以下代码并授予用户权限后,当我查看页面时,它将落在{% else %} 语句上。显示用户没有权限。我该怎么办?

#CREATED A GROUP IN DJANGO ADMIN CALLED 'Premium'

Class Paid(models.Model):
    #models here

    class Meta:
        permissions=(
             ("view_film","Can view film"),
        )

查看

def eyo(request):
    return render_to_response('eyo.html',context_instance=RequestContext(request))

模板

{% block content %}

  {% if perms.paid.can_view_film %}

      <form action='https://www.test.com/checkout' method='post'>
      <input name='submit' type='submit' value='Checkout' />
     </form>

   {% else %}

    <p> yo broke! </p>

  {% endif %}

【问题讨论】:

  • 请发表您的看法
  • 安什,我做到了,但没有成功!
  • 在您的视图或您的自定义管理视图中,请确保传递请求对象或上下文,有时自定义视图上下文未传递且权限未充分填充。

标签: python django


【解决方案1】:

您是否在模板中传递 perms? 您是在视图中明确设置还是通过管理界面设置 perms.paid.can_view_film? 用户是否属于具有 perms.paid.can_view_film 权限的组?

您确定应用名称是“付费”吗?这应该是应用名称,而不是型号名称。

Django Perms

【讨论】:

  • 我已经在上面发布了我的观点。我通过管理界面授予了烫发。用户属于“Premium”组。
  • 'paid' 应该是您的应用程序名称。你的应用名称是什么?
  • artapp 是 appname 。付费的是模特。
【解决方案2】:

我正在根据我目前正在处理的 Django 项目中的权限进行一些条件渲染。一个小例子就是一个特定的图标。基本上,如果用户有删除权限,他们会看到一个图标,如果没有,他们会看到另一个。在我的模板中是这样的:

{% if perms.List.can_delete_list %}
    <li><a href="/social/a/search/" class="settings-edit"><span class="fui-search"></span></a></li>
{% else %}
    <li><a href="{% url 'dashboard_edit' %}" class="settings-edit"><span class="fui-new"></span></a></li>
{% endif %}

如果登录用户有can_delete_list,他们会看到一件事。如果没有,他们会看到别的东西。这有帮助吗?

【讨论】:

  • 我应该补充一点,List 是这里的类。
  • 这就是我上面所做的。只是支付的金额没有大写。我将付费更改为付费,但它不起作用。
  • 您是否通过 Django Admin 手动授予用户权限?如果是这样,请关闭服务器并重新启动它。因此,我之前在基于权限的视图方面遇到了麻烦。我的第二个建议是尝试使用内置的 Django 权限,以确保您可以在使用自定义权限之前使其正常工作。在我的示例中,can_delete_list 是 Django 自动生成的权限。
  • 非常感谢您的帮助!你摇滚:)
猜你喜欢
  • 2014-05-23
  • 2012-03-17
  • 2018-10-04
  • 2013-12-26
  • 2020-05-14
  • 1970-01-01
  • 1970-01-01
  • 2011-12-06
  • 2017-01-07
相关资源
最近更新 更多