[英]Django session data obtainable from models.py without key
我想從模型訪問會話變量,以便使用{{item.seller_email}}
自定義模板中顯示的內容。 來自models.py的相關代碼:
SESSION_STORE = import_module(settings.SESSION_ENGINE).SessionStore
class Item(Action):
def seller_email(self):
seller = self.get_seller()
session = SESSION_STORE()
debug('session: %s' % vars(session))
viewer = fetch(Client, email = session.get('client', None))
administrator = viewer.is_admin() if viewer else False
debug('viewer: %s, administrator: %s' % (viewer, administrator))
if administrator:
return seller.email
else:
return seller.anonymized[16:]
這里的答案似乎表明這是不可能的,也不是期望的,但是我缺乏對Django會話機制的理解,以確保: 在Django視圖之外訪問會話/請求信息
但這似乎表明可以通過不傳遞鍵來在視圖之外檢索當前會話: https : //docs.djangoproject.com/en/1.6/topics/http/sessions/#using-sessions-out -of-views ,但我已經嘗試過這種方式和上述方式,但結果相同:創建了一個“空”會話。
我敢肯定還有其他更好的方法可以做到這一點,我會自己找一個,但是熟悉Django內部原理的人可以解釋為什么這不可能嗎?
由於該模型對會話一無所知,因此會在不同組件之間產生不必要的糾纏(?),並違反MVC模式。
我建議做的是調用該函數,指定獲得正確結果所需的參數,在這種情況下為查看器對象。
如果使用問題中的代碼,那么如果在管理命令中使用模型(沒有http請求,因此沒有會話),您希望模型如何工作? 還是從事芹菜工作?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.