您好我一直在浏览https://docs.djangoproject.com/en/1.11/topics/auth/default/#authenticating-users中的文档。但是,它仅显示如何验证所有User
。
我已将某些User
分组,现在我只希望特定User
以特定形式登录。我怎样才能做到这一点?
此外,我应该何时使用Permissions
,何时应该使用Groups
?
答案 0 :(得分:1)
我建议你创建一个自定义装饰器来做,为什么?因为我认为这种方法很容易理解如何使用Group而不是使用Permissions。
yourapp/decorators.py
中的一个示例:
你可以看到,我们在这里专注于
if ... request.user.groups.filter(name='moderator')
来处理这个群体。
from django.shortcuts import render
def moderator_login_required(function):
def wrap(request, *args, **kwargs):
if request.user.is_authenticated() \
and request.user.groups.filter(name='moderator').exists():
return function(request, *args, **kwargs)
else:
context = {
'title': _('403 Forbidden'),
'message': _('You are not allowed to access this page!')
}
# you can also return redirect to another page here.
return render(request, 'path/to/error_page.html', context)
wrap.__doc__ = function.__doc__
wrap.__name__ = function.__name__
return wrap
可以在views.py
使用吗?
from yourapp.decorators import moderator_login_required
@moderator_login_required
def dashboard(request):
#do_stuff
或者,如果您使用CBV (基础类视图),您可以使用@method_decorator
,例如:
from django.views.generic.base import TemplateView
from django.utils.decorators import method_decorator
from yourapp.decorators import moderator_login_required
class DashboardView(TemplateView):
@method_decorator(moderator_login_required)
def dispatch(self, *args, **kwargs):
return super(DashboardView, self).dispatch(*args, **kwargs)
希望它有用......