我無法訪問我自定義的Django中間件中的session_key
。我嘗試使用訪問它:Django:如何訪問中間件中的session_key
session = Session.objects.get(pk=request.session._session_key)
或
session_key = request.COOKIES[settings.SESSION_COOKIE_NAME]
session = Session.objects.get(pk=session_key)
我得到的錯誤:
Session matching query does not exist.
我已經把我的中間件在MIDDLEWARE_CLASSES
結束後django.contrib.sessions.middleware.SessionMiddleware
在我settings.py
文件。
我可以在中間件中設置會話密鑰,但看起來好像session_key只在完整頁面顯示後生成/可訪問。因爲當頁面第一次顯示時{{ request.session.session_key }}
在我的模板中返回None
。當我刷新頁面時,我會看到session_key
。我非常歡迎任何關於如何訪問session_key
的提示。
你爲什麼要做那個查詢?爲什麼不直接訪問'request.session'? –
我有一個引用django_session表的表: session = models.ForeignKey(Session) 當我創建它的一個實例時,例如使用request.session,它給了我以下錯誤:無法指定「「:」Visitor.session「必須是」Session「實例。 這就是爲什麼我試圖查詢會話表,以獲得「會話」實例。 –
當你擊中數據庫時,你真的有會話密鑰嗎?新會話僅在會話中間件的'process_response'中創建 - 因爲它們需要存儲視圖中的任何內容,並且在視圖完全處理之前無法完成此操作。 – ilvar