class AdminView(generic.ListView):
model = get_user_model()
fields = ['first_name', 'username', 'is_active']
template_name = 'users/admin.html'
class AdminUpdateView(UpdateView):
model = get_user_model()
fields = ['is_active']
template_name = 'users/user_update.html'
success_url = reverse_lazy('users:admin')
我在django中创建了两个视图,我希望只有当管理员/员工登录时才能访问它们。我该怎么做?
5条答案
按热度按时间ryhaxcpt1#
您可以使用**
UserPassesTestMixin
[Django-doc]和LoginRequiredMixin
**[Django-doc] mixin,并指定用户应该是is_superuser
作为条件。既然你需要两次,我们可以先做一个复合mixin:接下来,你可以将mixin添加到你的类视图中:
rlcwz9us2#
可以使用
UserPassesTestMixin
:z31licg03#
使用装饰器,通过@login_required,你可以告诉这个视图只有在用户os登录时才能访问,你也可以向它传递参数,或者创建一个你自己的装饰器来验证请求的登录用户是否能看到你的视图。
需要登录
https://docs.djangoproject.com/en/2.0/topics/auth/default/#the-login-required-decorator
经许可
https://docs.djangoproject.com/en/2.0/topics/auth/default/#the-permission-required-decorator
soat7uwm4#
如果你想使用LoginRedMixin,你仍然可以。而且它要简单得多。只需在所有类中扩展LoginServeredMixin,使它们像这样。
这可以确保用户在允许任何操作之前已经登录。然后,通过向每个类添加以下代码来检查用户是否是管理员;
你的代码现在应该看起来像这样:
ldioqlga5#
您可以通过REST框架使用
IsAdminUser
权限