2011-07-16 61 views
3

我想了解如何在Python會話中使用AJAX。我瞭解會話如何工作的基礎知識。當我將AJAX添加到組合中時,我的頭腦很難理解技術細節。部分我認爲AJAX和Python Sessoins是不可能的。我知道web框架存在,可能會做所有這些魔術,但我想在跳入框架之前自己學習如何做。HTML + AJAX + Python + Session?

我正在嘗試使用HTML,AJAX,Python和會話創建一個帶有登錄窗體的網頁。如果用戶能夠登錄,應創建一個會話(我認爲這是正確的)。否則,應該返回一條錯誤消息。

這裏是基本的應用程序佈局:

  • 的login.html:HTML表單的用戶名與密碼&輸入框和 提交按鈕
  • ajax.js:包含AJAX功能有服務器通信方 腳本
  • check_user.py:檢查用戶名是否爲&密碼正確,創建 會話或返回錯誤
  • welcome.html:只有用戶名&密碼是正確的訪問
  • welcome_1.html:只有用戶名&密碼是正確的訪問

我寧願保持HTML,JavaScript和Python代碼中分離文件,而不是使用Python創建HTML或使用HTML中的內聯Javascript。

這裏是應用程序邏輯:

user visits login.html 
    enters username & password 
    clicks submit button 
     submit button calls ajax function 
     ajax function sends username & password to check_user.py 
     check_user.py checks if username & password are correct 
      if not correct, return JSON formatted error message 
      else, correct 
       create session ID (SID) 
       place SID in cookie 
       return cookie to ajax function 
       redirect user to welcome.html 

welcome.html 
    on page load, ajax function requests user's cookie 
     if no cookie, redirect to login.html 
     else, ajax function sends cookie to check_user.py 
      check_user.py opens cookie & verifies the SID 
       if not correct, redirect user to login.html 
       else, correct 
        redirect user to welcome.html

我想我誤解AJAX是應該如何處理返回的cookie信息。我也有可能誤解其他部分。請澄清:-)

我想我會在編寫我的Python會話代碼時遵循this document。好吧?
我正在考慮使用jQuery的AJAX的東西和其他Javascript編碼。

謝謝!

+0

你有任何代碼了嗎?你有沒有決定使用什麼實現? WSGI直接(不!)或框架(如Django或Flask - 我喜歡並推薦Django)? –

+0

(使用CGI不是一個好主意,儘可能使用WSGI部署。) –

回答

1

請記住,AJAX請求與對服務器的任何其他HTTP請求相同。會話在服務器端進行維護,但就服務器而言,來自瀏覽器的請求是來自瀏覽器的請求。 AJAX請求可以像其他任何請求一樣獲取和設置cookie。你上面列出的方法應該可以正常工作。或者,您可以在首頁檢查會話的存在,然後寫入cookie。