不是基于模型的Django auth

时间:2017-05-23 08:39:34

标签: django django-authentication

我正在学习Django auth,它看起来很棒! 然而,我注意到它似乎有点太基于模型了。

我想到的是,假设我有两个网页(监控,统计),并且它们都使用相同的模型(事件表)。我想要的是为不同用户添加访问监控和统计信息的权限,例如:can_use_monitoring,can_use_statistics。
我认为将相同的模型添加到这两个权限并不是一个问题,但似乎没有必要和误导。或者我错过了什么?

你将如何实现这一目标?

谢谢,

///////更新/////////
一想法:我想要的是基于网页而不是模型获得许可。一个页面可能使用更多模型,我不知道应该将哪个模型分配给权限(因为我只能使用一个)。

1 个答案:

答案 0 :(得分:0)

  

我认为将相同的模型添加到这两个权限并不是一个问题,但似乎没有必要和误导。或者我错过了什么?

是的,将相同模型添加到不同的权限没有问题。

通常您应该使用Django's Groups功能。创建一个具有一组权限的组,然后继续将用户添加到该组。

https://docs.djangoproject.com/en/1.11/topics/auth/default/#django.contrib.auth.decorators.user_passes_test

  

一想法:我想要的是获得基于网页而非模型的许可。一个页面可能使用更多模型,我不知道应该将哪个模型分配给权限(因为我只能使用一个)。

通过使用user_passes_testpermission_required修饰符装饰您的视图,可以实现这一点。 More here.here

例如

from django.contrib.auth.decorators import user_passes_test
@user_passes_test(email_check)
def my_view(request):
    ...

def email_check(user):
    return user.email.endswith('@example.com')