이 웹 사이트를 살펴보고 있지만 작동하지 않는 방법을 알 수없는 것 같습니다. 현재 사이트 사용자가 로그인 (인증)되었는지 확인해야합니다.
request.user.is_authenticated
사용자가 로그인했는지 확인하더라도 다음과 같이 반환됩니다.
>
위의 URL의 첫 번째 섹션에서 다음과 같은 다른 요청을 할 수 있습니다.
request.user.is_active
성공적인 응답을 반환합니다.
이 웹 사이트를 살펴보고 있지만 작동하지 않는 방법을 알 수없는 것 같습니다. 현재 사이트 사용자가 로그인 (인증)되었는지 확인해야합니다.
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 문서에서는 더 이상 언급하지 않습니다.
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
})
request.user
. 사용자가 로그인했는지 여부는 브라우저 세션과 같이 요청 컨텍스트에서만 중요합니다.
다음 블록이 작동해야합니다.
{% 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):
request.user.is_authenticated
응용 프로그램이 항상 사용자를 로그 아웃한다는 것을 알고 있다면 사용자에게 더 좋습니다
들어 장고 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 ()가 제거되었습니다.
request.user.is_authenticated
여전히 유효합니다. 당신은하지 장고 - 나머지 프레임 워크 문서를 참조하는 장고