2012-10-22 123 views
0

在我的應用程序的一部分中,我爲訪問者提供了一些自定義設置。 當用戶載入頁面時,我嘗試檢查請求的自定義設置,如果存在設置,我在頁面中進行自定義。如何檢查會話而不創建新會話?

我做在Template Context Processor

def shared_values(request): 

    show_help = request.session.get('show_help', True) 
    return { 
     'show_help': show_help, 
    } 

它的工作完美,但我有問題 - 每一次,當我檢查會話的Django創建會話表新條目,如果條目不存在之前。

如何在不創建新會話的情況下檢查會話?

編輯1:

然後我禁用檢查會話密鑰,我看到Django不創造任何請求會話條目。

  1. 我登錄,在第一次瀏覽器(Chrome)管理和刪除所有的會話(除一個用於mydself)
  2. 編輯背景處理器,所以我並不在我的項目訪問會話:

    show_help =真

  3. 在不同的瀏覽器打開頁面(火狐)

  4. 切換到瀏覽器的第一次,並檢查是否有新的會話對象出現,但什麼事都沒有昌ed - 只有一個會話對象存在。

編輯2:

我使用Django 1.4.1

回答

0

Docs

SessionMiddleware當被激活時,每個HttpRequest對象 - 的 第一個參數的Django任何視圖函數 - 將有一個session 屬性,這是一個類似字典的對象。

所以,每當你提出請求 - 會話將被創建,如果它不存在已經。 當應用context_processor - 會話已存在。你不應該爲此擔心。

+0

其實這是不正確的。因爲然後我禁用檢查會話密鑰,我看到什麼Django不創建任何會話條目。 – inoks

+0

我編輯我的問題 – inoks

+0

我做了一個實驗。我刪除了數據庫中的所有會話條目,並在第一個context_processor的第一行設置了一個斷點。我運行調試,過程在斷點處停住,我看着數據庫,然後......瞧 - 有新的會話條目。也許你應該更詳細地描述你的問題 –