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的权限系统来控制按钮显示。
user.has_perms()


