2013-11-23 189 views
3

我正在使用Python Django爲我的應用程序。我想在用戶關閉他的瀏覽器並想要將該會話查殺或瀏覽器關閉時間存儲在數據庫中時終止會話。
Django的會話提供機制到期會話當用戶關閉瀏覽器從瀏覽器中刪除會話cookie在settings.py文件設置如何在瀏覽器中關閉一個會話關閉Django

SESSION_EXPIRE_AT_BROWSER_CLOSE=True 

。它從用戶瀏覽器中刪除會話cookie。我可以在後臺或django上獲得此事件嗎?或者我怎樣才能通過AJAX將消息傳遞給Django服務器:瀏覽器已關閉,會話cookie已被刪除。告訴我,如果這是可能的django或如何可以使用javascript

回答

1

爲了使ajax調用之前卸載恐怕你會結束顯示一個惱人的警告框給用戶,因爲它的事件預期:

Date.prototype.timeNow = function(){ 
    return ((this.getHours() < 10)?"0":"") + this.getHours() +":"+ ((this.getMinutes() < 10)?"0":"") + this.getMinutes() +":"+ ((this.getSeconds() < 10)?"0":"") + this.getSeconds(); 
}; 

$(window).bind("beforeunload", function (e) { 
    var timeNow = new Date().timeNow(); 
    $.post("api/closingTime", { "closingTime": timeNow }); 
    return "Thanks for your visit"; 
}); 

這也是一個小問題,因爲如果用戶決定點擊在網頁上停留的要求後仍向前走

+0

謝謝XGreen,SESSION_EXPIRE_AT_BROWSER_CLOSE = True。在Django中使用這種方法時,cookie在關閉時會自動從瀏覽器中刪除。我只是想向Django服務器發送一個ajax請求,這樣我就可以在請求發出時獲得cuurent時間並將該時間存儲到數據庫中。 –

+0

Thanx Xgreen,我沒有試過你的方法,因爲我試過這一個window.onbeforeunload = function(){ \t alert(「嘿你離開這個網站」) 返回「嘿,你要離開的網站,再見! 「; }; 但是,即使當我點擊一個鏈接時,我也會給予警報或每次調用該方法。意味着當url更改時調用此方法。 –