簡體   English   中英

可以從model.py中獲取沒有密鑰的Django會話數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM