Ama*_*rma 6 django django-class-based-views
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')
Run Code Online (Sandbox Code Playgroud)
我在 django 中创建了两个视图,我希望只有在管理员/员工登录时才能访问它们。我该怎么做?
Wil*_*sem 16
您可以使用UserPassesTestMixin[Django-doc]和LoginRequiredMixin[Django-doc]混合,并指定用户应该是is_superuser. 由于您需要两次,我们可以先制作一个复合 mixin:
from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
class AdminStaffRequiredMixin(LoginRequiredMixin, UserPassesTestMixin):
def test_func(self):
return self.request.user.is_superuser or self.request.user.is_staffRun Code Online (Sandbox Code Playgroud)
接下来,您可以将 mixin 添加到基于类的视图中:
class AdminView(AdminStaffRequiredMixin, generic.ListView):
model = get_user_model()
fields = ['first_name', 'username', 'is_active']
template_name = 'users/admin.html'
class AdminUpdateView(AdminStaffRequiredMixin, UpdateView):
model = get_user_model()
fields = ['is_active']
template_name = 'users/user_update.html'
success_url = reverse_lazy('users:admin')Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2899 次 |
| 最近记录: |