我必须重构代码,如:
views.py
def some_method(request):
customers = list()
if request.session['group'] == "group1":
foo = foo.objects.filter(blue=True)
else:
foo = foo.objects.all()
我有很多if else语句,我想使用django内置权限,auth功能来减少。有什么帮助吗?
答案 0 :(得分:0)
我建议您阅读:Using the Django authentication system,特别是The permission_required decorator部分。
你会发现你可以像这样重构你的功能:
@permission_required('some.permission.only.group1.has')
def some_method(request):
customers = list()
foo = foo.objects.filter(blue=True)
对于用户不在group1
的情况,应该存在另一个视图。你发布的例子并不能说明每个案例的观点,但相信我会让你的生活更轻松。
提示:在模板中,您还可以限制用户使用权限查看的内容。您甚至可以在调用视图之前管理权限。
{% if perms.app_label.can_do_something %}
<form here>
{% endif %}
当前登录用户的权限存储在模板变量{{perms}}
中