gpt4 book ai didi

permissions - Django 管理员,如何在 Django 模板中正确检查用户的权限?

转载 作者:行者123 更新时间:2023-12-01 11:41:17 32 4
gpt4 key购买 nike

这里是新手。我的应用程序名称是 ccad。模型名称是 logbook。用户 A 无权从可用用户权限编辑、添加或删除日志模型。

所以我尝试隐藏用户 A 的保存、保存并继续编辑、保存并添加其他按钮。

我遵循了在 SO 中找到的建议。 Here's来自 Sid 回答的 picomon 查询。和 daniel the same inquiry .

我最终将下面的代码写入了我的模板。

change_form.html 位于 {{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 %} 但无济于事。

执行此操作的最佳方法是什么?

最佳答案

首先检查模板上下文中的 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,则当前用户拥有 super 用户权限,即使对于 {{ perms.omg.can_facepalm }} 也始终返回 True

关于permissions - Django 管理员,如何在 Django 模板中正确检查用户的权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20463625/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com