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