Permissions Django管理员,如何正确检查用户';在django模板中的权限?
我是新手。我的申请名字是ccad。型号名称是logbook。用户A无权从可用的用户权限中编辑、添加或删除日志模型 所以我试着对用户A隐藏保存、保存和继续编辑、保存和添加其他按钮 我遵循了在SO中找到的建议。 来自皮科蒙的询问,席德回答了。和 最后我把下面的代码写到了我的模板中 更改位于{{template folder}}/admin/app_name/model_name的_form.html/Permissions Django管理员,如何正确检查用户';在django模板中的权限?,permissions,django-templates,django-admin,Permissions,Django Templates,Django Admin,我是新手。我的申请名字是ccad。型号名称是logbook。用户A无权从可用的用户权限中编辑、添加或删除日志模型 所以我试着对用户A隐藏保存、保存和继续编辑、保存和添加其他按钮 我遵循了在SO中找到的建议。 来自皮科蒙的询问,席德回答了。和 最后我把下面的代码写到了我的模板中 更改位于{{template folder}}/admin/app_name/model_name的_form.html/ {%if perms.ccad.add_logbook%} {%endif%} 但是没有权
{%if perms.ccad.add_logbook%}
{%endif%}
但是没有权限的用户仍然可以看到我提到的按钮
我还尝试将{%if perms.ccad.add_logbook%}
更改为{%if perms.ccad.can_add_logbook%}
,但没有效果
最好的方法是什么?首先在模板上下文中检查perms变量。在模板可见的地方添加一个
…{{perms}}…
。它应该像这样呈现,……
如果不是这种情况,则缺少模板中的权限
验证设置TEMPLATE\u CONTEXT\u PROCESSORS
元组是否包含django.contrib.auth.CONTEXT\u 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}也始终返回True
我无法将模板上下文处理程序放在我的settings.py上,而且我正在使用我的超级用户帐户来测试模板。+1是为了给我一个测试模板变量的想法。我忘记了那一个。模板上下文处理程序
有一个默认列表。我认为django.contrib.auth.CONTEXT\u PROCESSORS.auth
在该列表中
{% 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 %}