![](/img/trans.png)
[英]How to restrict access to certain groups in django class based view
[英]How to restrict access by user groups in Django class based view?
看法
問題:我想在基於 django class 的視圖中使用權限限制。 如果登錄用戶屬於學生組,那么我想重定向到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
有一些方法可以存檔它,
嘗試查看permission_required
裝飾器。
from django.contrib.auth.decorators import permission_required
@permission_required('user', login_url='/redireect_to_student/')
def student_view(request):
...
如果發出請求的用戶不符合權限,將被重定向到login_url
(它可以是您應用程序的任何 URL)
另一種方法可能是使用user_passes_test
裝飾器。
如果 function 被傳遞,用戶可以see
視圖,否則將被重定向到您的應用程序的特定 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 文檔
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.