로그인한 사용자의 액세스 제한 사항

1294 단어
우리는 user_를 사용할 수 있다passes_테스트 장식기, 사용자 접근을 제한하는 목적을 달성합니다.
다음은 이메일을 작성한 사용자만 이 페이지에 접근할 수 있도록 제한하는 실례입니다.
from django.shortcuts import render
from django.http import HttpResponse 
from django.contrib.auth.decorators import user_passes_test


def email_check(user):
    return user.email

@user_passes_test(email_check, login_url='no_email')
def test(request):
    return HttpResponse(' !')

def no_email(request):
    return HttpResponse(' !')

이메일을 작성하지 않은 사용자가 액세스하는 경우:http://127.0.0.1:8000/test/다음 위치로 이동합니다.http://127.0.0.1:8000/no_email/?next=/test/
user_passes_test () 는 사용자가 이 보기에 접근할 수 있으면 True를 반환하는 User 객체를 매개 변수로 하는 콜백 함수를 요구합니다.
주의,user_passes_test()는 User가 익명 객체인지 여부를 자동으로 검사하지 않습니다.





user_passes_test()에 대한 추가 매개변수:
  • login_url에서 검사를 통과하지 못한 사용자가 어디로 튈지 지정하라고 합니다.값을 지정하지 않으면 기본 settings일 수 있습니다.LOGIN_URL.
  • redirect_field_name 및 login_required () 의 매개 변수는 같습니다.이것을 None으로 설정하여 URL에서 제거합니다. 검사할 수 없는 사용자를next 페이지가 없는 비로그인 페이지로 바꾸려고 할 때..

  • 우리는 상례의 장식기를 다음과 같이 바꾸었다.
    @user_passes_test(email_check, login_url='no_email', redirect_field_name=None)
    

    뛰면 안 나온다고요?next=의 문자는 다음과 같습니다.http://127.0.0.1:8000/no_email/

    좋은 웹페이지 즐겨찾기