我遇到了一個問題,我將request.user
分配給了一個名爲prior_user
的變量,然後對用戶進行了實質性驗證,然後檢查了request.user != prior_user
。我期望他們不是一樣的,prior_user
應該包含`AnonymousUser。令我驚訝的是,他們是一樣的。django:django.utils.functional.SimpleLazyObject的用途?
示例代碼:
prior_user = request.user # request object, obtained froma view
authenticate_user(request) # some function that authenticates
print prior_user.username != request.user.username # returns False i.e.they are the same!
我這時才發現prior_user實際上包含django.utils.functional.SimpleLazyObject的一個實例,所以我認爲這是某種形式的懶惰查找類型的東西即prior_user的值不擡頭直到實際使用。查看源代碼,我無法證實這一點。
任何有Django經驗的人都可以告訴我發生了什麼以及爲什麼需要它?
這讓我有點動搖,因爲通常的賦值語句不能像我期望的那樣工作,Django中的其他內容也是如此嗎?我也沒有看到在docs中描述的這種情況。
因此,任何具有django超人類知識的人都可以提供一些清晰度?
謝謝,這對於像我這樣的django初學者非常有幫助! – donogood
+1爲了解釋! – Anoyz