2016-07-28 52 views
0

我在我的視圖文件中有以下代碼。爲什麼AnonymousUser在Django中爲is_authenticated返回True?

if request.user.is_authenticated: 
    owner = request.user 
    if cart.owner != owner: 
     cart.owner = owner 
    cart.save() 

不過,我面臨着以下錯誤:

Cannot assign "<SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x103ff37b8>>": "Cart.owner" must be a "User" instance.

爲什麼Django的運行線cart.owner = owner即使用戶沒有通過驗證?

回答

3

is_authenticated是一種方法,你只是檢查是否有一個方法可用該名稱,而不是你的用戶是否通過身份驗證。

您需要調用該方法。

if request.user.is_authenticated(): 
+1

該死。謝謝,新手錯誤。 :) – MiniGunnR

+1

請注意,在Django 1.10中,'is_authenticated'正在從一個方法改變爲一個屬性,這樣用戶就不會被忘記調用它。 – Alasdair

相關問題