如何摆脱与群组相关的查询?

时间:2014-12-08 13:31:38

标签: python django session refactoring

我必须重构代码,如:

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功能来减少。有什么帮助吗?

1 个答案:

答案 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}}

参考文献:Check permission inside a template in Django