Saya melihat-lihat situs web ini, tetapi sepertinya tidak tahu bagaimana melakukan ini karena tidak berfungsi. Saya perlu memeriksa apakah pengguna situs saat ini login (dikonfirmasi), dan saya mencoba:
request.user.is_authenticated
meskipun yakin bahwa pengguna login, ia hanya mengembalikan:
>
Saya dapat melakukan permintaan lain (dari bagian pertama di url di atas), seperti:
request.user.is_active
yang mengembalikan respons yang sukses.
python
django
authentication
Rick
sumber
sumber
Jawaban:
Pembaruan untuk Django 1.10+ :
is_authenticated
sekarang merupakan atribut di Django 1.10. Metode ini masih ada untuk kompatibilitas mundur, tetapi akan dihapus dalam Django 2.0.Untuk Django 1.9 dan lebih lama :
is_authenticated
adalah suatu fungsi. Anda harus menyebutnya sepertiSeperti yang ditunjukkan oleh Peter Rowell, yang mungkin membuat Anda tersandung adalah bahwa dalam bahasa templat Django default, Anda tidak menggunakan kurung untuk memanggil fungsi. Jadi, Anda mungkin telah melihat sesuatu seperti ini dalam kode templat:
Namun, dalam kode Python, ini memang metode di
User
kelas.sumber
Django 1.10+
Gunakan atribut, bukan metode:
Penggunaan metode dengan nama yang sama tidak digunakan lagi dalam Django 2.0, dan tidak lagi disebutkan dalam dokumentasi Django.
Perhatikan bahwa untuk Django 1.10 dan 1.11, nilai properti adalah a
CallableBool
dan bukan boolean, yang dapat menyebabkan beberapa bug aneh. Sebagai contoh, saya memiliki pandangan yang mengembalikan JSONbahwa setelah diperbarui ke properti
request.user.is_authenticated
melempar pengecualianTypeError: Object of type 'CallableBool' is not JSON serializable
. Solusinya adalah menggunakan JsonResponse, yang bisa menangani objek CallableBool dengan benar saat membuat serial:sumber
request.user
. Apakah pengguna masuk atau tidak hanya penting dalam konteks permintaan, misalnya sesi browser.Blok berikut harus berfungsi:
sumber
Menurut Anda:
Di Anda fungsi pengontrol menambahkan dekorator:
sumber
request.user.is_authenticated
jika Anda tahu bahwa aplikasi Anda akan selalu mengeluarkan penggunaJika Anda ingin memeriksa pengguna yang diautentikasi dalam templat Anda, maka:
sumber
Untuk versi Django 2.0+ gunakan:
Untuk info lebih lanjut kunjungi https://www.django-rest-framework.org/api-guide/requests/#auth
request.user.is_authenticated () telah dihapus dalam versi Django 2.0+.
sumber
request.user.is_authenticated
masih valid Anda merujuk dokumentasi Django-rest-framework bukan Django