我试图创建一个简单的Django模板标签来显示或隐藏在我的网站上提交的评论旁边的“删除”链接。如何为访问控制编写Django模板标签?
概括地说,我要评论对象传递给模板标签,确定在当前登录的用户有权删除注释,然后显示或不显示的链接。
模板中的用法是,像这样:
{% load access_tags %}
{% if_authorized comment %}
<a href="{% url delete_comment comment.id %}">Delete</a>
{% endif_authorized %}
放心,我还要检查在适当的视图,如果用户有权删除评论。
请问这种类型的标签都有一个特定的名字吗?如果确实如此,它肯定会帮助我进行Google搜索。谢谢你的帮助!
更新1:
我的网站的工作,两个人可能有权删除评论的方式:1)评论创建和2),其中留下评论的帖子的主人。因此,我需要根据评论确定是否存在这些情况之一。
我不认为我可以使用像Django的内置权限系统正,因为它要求的权限“被每个类型的对象,没有按特定对象实例全局设置”。
在我的情况下,用户“Bob”可能有权删除评论(如果他写了或者他创建的帖子),但他也可能不允许删除它(如果他在看对别人的帖子发表评论)。
更新2:
看来,你不能传递对象到模板标签,只有字符串:“虽然你可以传递任何数量的参数使用token.split_contents模板标签(),参数都是解压缩为字符串文字。“我想我会传递有问题的评论对象的id,并将其拖入标记中。
我错了这一点,只需要访问传入的对象,如:
self.comment.resolve(context).user
与
self.comment.user
冷静的解决方案,我适应它,所以你可以检查用户权限。你也可以将它们嵌套在一起,这非常适合!谢谢 – 2017-07-25 13:59:09