新手在这里。我的申请名称是ccad。型号名称为logbook。用户A无权从可用的用户权限编辑,添加或删除日志模型。
所以我尝试隐藏保存,保存并继续编辑,保存并添加来自用户A的其他按钮。
我跟着我在SO中找到的建议。 来自picid调查的Here's由Sid回答。并daniel the same inquiry。
我最终将下面的代码写入我的模板。
位于{{template folder}} / admin / app_name / model_name / 的 {% if perms.ccad.add_logbook %}
<li><input type="submit" value="{% trans 'Save ' %}" class="grp-button grp-default" name="_save" {{ onclick_attrib }}/></li>
<li><input type="submit" value="{% trans 'Save and add another' %}" class="grp-button" name="_addanother" {{ onclick_attrib }} /></li>
<li><input type="submit" value="{% trans 'Save and continue editing' %}" class="grp-button" name="_continue" {{ onclick_attrib }}/></li>
{% endif %}
但是没有权限的用户仍然可以看到我提到的按钮。
我也尝试将{% if perms.ccad.add_logbook %}
更改为{% if perms.ccad.can_add_logbook %}
但无济于事。
最好的方法是什么?
答案 0 :(得分:5)
首先检查模板上下文中的perms变量。在模板可见的位置添加...{{ perms }}...
。它应该像...<django.contrib.auth.context_processors.PermWrapper object at X>...
一样呈现。
如果不是这种情况,则表示您缺少模板中的权限。
确认您的设置TEMPLATE_CONTEXT_PROCESSORS
元组包含django.contrib.auth.context_processors.auth
。
在渲染模板时,请确保使用RequestContext
而不是Context
。
如果您最终看到PermWrapper,但您的权限检查仍然无效,请将之前的调试更改为...{{ perms.ccad }}...
。
这应该输出类似于“set([u'ccad.add _...',...])的内容。
如果没有,那么您的应用可能不会被称为ccad
。
最后在创建if条件之前,请确保权限返回“... {{perms.ccad.add_logbook}}} ...”。这应该返回True或False。
现在我到最后我注意到你的问题是相反的,到目前为止我写的所有内容都没用。 :)
将{{ user.is_superuser }}
添加到您的模板中。如果为True,则当前用户具有超级用户权限,即使对于{{ perms.omg.can_facepalm }}