Python中如何在Django框架下控制某个按钮的显示权限?

如标题


Python中如何在Django框架下控制某个按钮的显示权限?
4 回复

用模板的 if 或者前端来控制


在Django里控制按钮的显示权限,核心就是用模板标签和权限系统。最直接的办法是在模板里用{% if perms %}标签判断用户权限,决定是否渲染这个按钮。

假设你有个叫myapp的应用,里面定义了一个叫can_edit_post的权限。在模板里你可以这么写:

{% if perms.myapp.can_edit_post %}
    <button type="button" class="btn btn-primary">编辑文章</button>
{% endif %}

或者,如果你需要更复杂的逻辑,比如基于对象权限(object-level permission),可以用django-guardian这样的第三方库。安装后,在模板里加载guardian标签:

{% load guardian_tags %}
{% get_obj_perms user for post as "post_perms" %}

{% if "change_post" in post_perms %}
    <button type="button" class="btn btn-primary">编辑这篇文章</button>
{% endif %}

总结:用模板标签{% if perms %}配合Django的权限系统来控制按钮显示。

一楼说得对,在模板代码中 {% if self.has_perms(‘can view’) %} <button>按钮</button>{% else %} nothing{% end if %}。关于判断用户是否具有某个权限的函数,你大可以去看官方文档,有好几个函数可以使用,我记不太清啦。

user.has_perms()

回到顶部