1

@login_required 데코레이터와 is_authenticated()을 사용하는 것이 명확하게 구분되지 않습니다. 어쨌든, 나는 (정확하게는 아니지만) 유사한 검사를 수행한다고 생각합니다.@login_required와 is_authenticated() - 언제 장고에서 사용할 수 있습니까?

def dosomethingNow(request): 
    if request.user.is_authenticated(): 
     //carry out the function 
    else: 
      //redirect to login page 

같은 functionlogin_required 장식 :

@login_required 
def dosomethingNow(request): 
    //carry out the function 

모두 functionis_authenticated() 제외하고 유사한 검사를 수행,로 리디렉션 수있는 옵션을 제공합니다

하자 내가 내 views.pyfunction이 있다고 homepage 그렇지 않은 경우 logged 인치

하나를 다른 것보다 더 많이 사용하고 교환 할 수없는 곳에 사용하면 다른 이점이 있습니까?

감사합니다.

+0

그들은 완전히 다른 것입니다. 'login_required'는 메소드에 적용되며 익명 사용자가이보기에 액세스하려고하는 경우 설정에 지정된 로그인 페이지로 리디렉션됩니다. 반면에'is_authenticated'는 사용자가 로그인했는지 여부만을 확인합니다. – karthikr

답변

1

예제 코드에서 사용하는 방식대로 본질적으로 같습니다. 그러나

을 -

(출력에 다른 템플릿을 로그인 양식으로 리디렉션, 다른 곳에 재 등이 참고로, 당신은 그들이하지 않은 경우 어떻게 할 것인지를 결정할 수 있습니다) user.is_aunthenticated이 더 유연 사용 , @login_required은 "선언적"이며, 좋을 수 있습니다. 예를 들어 뷰 기능을 모두 나열한 스크립트를 작성하고 주위에 @login_required 데코레이터가 있는지 여부를 알 수 있으므로 사이트의 "로그인 필요"섹션에 대한 좋은 보고서를 볼 수 있습니다. 검사가 함수 내부에 묻혀있는 코드에서 발생하면 그 가능성을 잃게됩니다.

정말 개발 스타일의 문제입니다. 특수한 경우로 처리하기 위해 유연성이 필요합니까? 또는 선언적 스타일을 사용하는 것이 합리적입니까?

다른 구현을 원한다면 선언적 스타일을 원한다면 (예 : 로그인하지 않은 사용자를 자주 홈페이지로 리디렉션하려는 경우 자신의 데코레이터 인 @homepage_if_not_auth)를 작성하여)