Python 如何在基于Django类的视图中限制用户组的访问?
查看 问题:我想在基于django类的视图中使用权限限制。如果登录用户属于学生组,那么我想重定向到Python 如何在基于Django类的视图中限制用户组的访问?,python,django,django-views,Python,Django,Django Views,查看 问题:我想在基于django类的视图中使用权限限制。如果登录用户属于学生组,那么我想重定向到student dashurl。如果用户来自教师,它将重定向到teacher dashurl。如果学生用户试图访问教师仪表板,那么我想从教师仪表板限制该学生用户,并呈现404错误?如果有任何帮助,我将不胜感激 class STListView(ListView): queryset = Article.objects.exclude(story_status='sn') tem
student dash
url。如果用户来自教师,它将重定向到teacher dash
url。如果学生用户试图访问教师仪表板,那么我想从教师仪表板限制该学生用户,并呈现404错误?如果有任何帮助,我将不胜感激
class STListView(ListView):
queryset = Article.objects.exclude(story_status='sn')
template_name = 'index_page.html'
context_object_name = 'list'
def get_context_data(self, **kwargs):
context = super(STListView, self).get_context_data(**kwargs)
group = self.request.user.groups.filter(user=self.request.user)[0]
if group.name == "student":
return HttpResponseRedirect(reverse('student-dash'))
elif group.name == "teacher":
return HttpResponseRedirect(reverse('teacher-dash'))
elif group.name == "Manger":
return HttpResponseRedirect(reverse('manger-dash'))
return context
有一些方法可以将其归档 尝试查看所需的
权限
如果发出请求的用户不符合权限,则将重定向到登录\u url
(它可能是应用程序的任何url)
另一种方法是使用用户通过测试
如果传递函数,用户可以查看视图,否则将重定向到应用程序的特定URL:
from django.contrib.auth.decorators import user_passes_test
def email_check(user):
return user.groups == 'student'
@user_passes_test(email_check)
def my_view(request):
...
是关于权限的Django文档
from django.contrib.auth.decorators import user_passes_test
def email_check(user):
return user.groups == 'student'
@user_passes_test(email_check)
def my_view(request):
...