[python] 사용자가 로그인했는지 확인하는 방법 (user.is_authenticated를 올바르게 사용하는 방법)?

이 웹 사이트를 살펴보고 있지만 작동하지 않는 방법을 알 수없는 것 같습니다. 현재 사이트 사용자가 로그인 (인증)되었는지 확인해야합니다.

request.user.is_authenticated

사용자가 로그인했는지 확인하더라도 다음과 같이 반환됩니다.

>

위의 URL의 첫 번째 섹션에서 다음과 같은 다른 요청을 할 수 있습니다.

request.user.is_active

성공적인 응답을 반환합니다.



답변

Django 1.10+ 업데이트 : is_authenticated이제 Django 1.10의 속성입니다. 이 방법은 이전 버전과의 호환성을 위해 여전히 존재하지만 Django 2.0에서는 제거됩니다.

Django 1.9 이상 :

is_authenticated함수입니다. 당신은 그것을 이렇게 불러야합니다

if request.user.is_authenticated():
    # do something if the user is authenticated

Peter Rowell이 지적했듯이 기본 장고 템플릿 언어에서는 함수를 호출하기 위해 괄호를 사용하지 않습니다. 따라서 템플릿 코드에서 다음과 같은 것을 보았을 것입니다.

{% if user.is_authenticated %}

그러나 파이썬 코드에서는 실제로 User클래스 의 메소드입니다 .


답변

장고 1.10+

메소드가 아닌 속성을 사용하십시오 .

if request.user.is_authenticated: # <-  no parentheses any more!
    # do something if the user is authenticated

Django 2.0에서는 같은 이름의 방법을 사용하지 않으며 Django 문서에서는 더 이상 언급하지 않습니다.


Django 1.10 및 1.11의 경우 속성 값은 CallableBool부울이 아니며 이상한 버그가 발생할 수 있습니다. 예를 들어 JSON을 반환하는 뷰가 있습니다.

return HttpResponse(json.dumps({
    "is_authenticated": request.user.is_authenticated()
}), content_type='application/json') 

속성 request.user.is_authenticated으로 업데이트 한 후 예외가 발생했습니다 TypeError: Object of type 'CallableBool' is not JSON serializable. 해결책은 직렬화 할 때 CallableBool 객체를 올바르게 처리 할 수있는 JsonResponse를 사용하는 것입니다.

return JsonResponse({
    "is_authenticated": request.user.is_authenticated
})


답변

다음 블록이 작동해야합니다.

    {% if user.is_authenticated %}
        <p>Welcome {{ user.username }} !!!</p>
    {% endif %}


답변

당신의 관점에서 :

{% if user.is_authenticated %}
<p>{{ user }}</p>
{% endif %}

컨트롤러 기능에서 데코레이터를 추가하십시오.

from django.contrib.auth.decorators import login_required
@login_required
def privateFunction(request):


답변

템플릿에서 인증 된 사용자를 확인하려면 다음을 수행하십시오.

{% if user.is_authenticated %}
    <p>Authenticated user</p>
{% else %}
    <!-- Do something which you want to do with unauthenticated user -->
{% endif %}


답변

들어 장고 2.0 이상 버전 사용

    if request.auth:
       # Only for authenticated users.

자세한 내용은 https://www.django-rest-framework.org/api-guide/requests/#auth를 방문 하십시오.

Django 2.0 이상 버전에서 request.user.is_authenticated ()가 제거되었습니다.


답변