is_authenticated AnonymousUser uchun rostini beradi

Kirish qilmaganimda is_authenticated bilan qaytayotganimda True bilan kurashaman:

u = request.user
if u.is_authenticated:
    raise Exception('I am said to be authenticated, but I really am not.')

Oshkoralash uchun, Django disk raskadrovka ko'rinishi u kodini AnonymousUser sifatida aniqlab beradi:

u   

Yana bir g'alati, shabloni ichida is_anonymous yaxshi ishlaydi:

{% if not request.user.is_authenticated %}
    We are anonymous.
{% endif %}

Nima sababdan?

4
qo'shib qo'ydi muallif Paul Kenjora, manba

2 javoblar

Bu usuli , mulk emas. Uni chaqirishingiz kerak:

if u.is_authenticated():

Albatta, Django shablonida siz uchun usullarni chaqiradi

26
qo'shib qo'ydi

is_authenticated is a method, so you need some parentheses there. Otherwise, u.is_authenticated is the function object, which is a Trueish value.

Andoza tilida argumentlarga ega bo'lmagan funktsiyalar funktsiyalar sifatida baholanadi, shuning uchun siz u erda yaxshi ekanligingizni bildirasiz.

6
qo'shib qo'ydi
Oh, rahmat. Bu mukammal ma'noga ega. Bu nozik xatolardan biri, ko'zingizni yillar davomida faqatgina booleanlarga ruxsat beruvchi til bilan ishlashga o'rgatishi mumkin emas.
qo'shib qo'ydi muallif Dan Abramov, manba