장고에서 superuser에서만 액세스 제한을 수행하는 방법

3067 단어 파이썬장고
장고의 액세스 제한에 관한 것입니다.
ログインしているユーザーのみ 라고 하는 액세스 제한의 방법은 일본어 자료에서도 확인할 수 있었습니다만,superuser 만이라고 하는 액세스 제한의 방법에 대해서는, 그다지 보이지 않았으므로 해설합니다.

누군가의 도움이 있으면 다행입니다.

환경


  • 장고 2.2.4

  • 함수로 개발하는 경우



    데코레이터를 붙이면 됩니다.

    views.py
    from django.contrib.auth.decorators import permission_required
    from django.http import HttpResponse
    
    @permission_required('admin.can_add_log_entry')
    def test(request):
        return HttpResponse("Only access superuser!")
    
    


    클래스에서 개발하는 경우



    모처럼, django를 사용하고 있다면, class 베이스로 개발하고 싶네요.
    그런 순간을 위한 Tips.

    1. mixins.py 정의



    django 앱 내에서 mixins.py를 만듭니다.

    mixins.py
    from django.contrib.auth.mixins import UserPassesTestMixin
    
    class SuperuserRequiredMixin(UserPassesTestMixin):
        def test_func(self):
            return self.request.user.is_superuser
    
    

    2.views.py에서 상속



    여기서 정의한 클래스를 views.py에서 사용합니다.

    views.py
    from .mixins import SuperuserRequiredMixin
    
    class TestView(SuperuserRequiredMixin,TemplateView):
        template_name = "test/home.html"
    

    액세스 제한이 가능하면,


    이런 느낌이 될 것.

    도움이되면 다행입니다.

    참고문헌


  • How to limit a view to superuser only?
  • 좋은 웹페이지 즐겨찾기