二、關於使用資料庫
三、當面臨這些問題時
一、關於如何使用cookie
1、設定cookie
resp = make_response(redirect('/userCenter'))
resp.set_cookie('username', username)
return resp
設定cookie, 預設有效期是臨時cookie,瀏覽器關閉就失效
同時,設定時有許多引數,如下
Response.set_cookie( key, //鍵 value='', //值 max_age=None, //秒為單位的cookie壽命,None表示http-only expires=None, //失效時間,datetime物件或unix時間戳 path='/', //cookie的有效路徑 domain=None, //cookie的有效域 secure=None, httponly=False)
因此也能這樣設定:
resp.set_cookie("Name2", "Python1", max_age=3600)
2、刪除cookie
resp = make_response(redirect('/login'))
resp.delete_cookie('username')
return resp
格式相似,注意第一行的路由是設定時使用的路由
3、獲取cookie
username = request.cookies.get('username')
這裡要提及的是,第一:cookie與session的區別
cookie
cookie的出現就是為了解決這個問題,cookie本質是一種儲存機制,為了儲存使用者相關的資訊。
第一次登入後伺服器返回一些資料(cookie)給瀏覽器,然後瀏覽器儲存在本地,當該使用者傳送第二次請求的時候,就會自動的把上次請求儲存的cookie資料自動的攜帶給伺服器,伺服器透過瀏覽器攜帶的資料就能判斷當前使用者是哪個了。
第一次訪問後,瀏覽器會自動儲存伺服器發過來的cookie資料,以便再次請求這個網站時讓伺服器"記住"使用者!
cookie特性
cookie儲存的資料量有限,不同的瀏覽器有不同的儲存大小,但一般不超過4KB。因此使用cookie只能儲存一些小量的資料。 cookie有有效期:伺服器可以設定cookie的有效期,以後瀏覽器會自動的清除過期的cookie。 cookie有域名的概念:只有訪問同一個域名,才會把之前相同域名返回的cookie攜帶給伺服器。也就是說,訪問谷歌的時候,不會把百度的cookie傳送給谷歌。
session
我們不可能把使用者的個人資訊直接儲存到cookie中,那樣太不安全了! 為了解決這種問題,session就誕生了~
不同的是,cookie是儲存在本地瀏覽器,session是一個思路、一個概念、一個伺服器儲存授權資訊的解決方案,不同的伺服器,不同的框架,不同的語言有不同的實現。總之,它是為了解決cookie儲存資料不安全的問題的。
Flask中的session機制是將session資訊加密,然後儲存在cookie中!!!!
第二:如何編寫程式碼時呼叫cookie
if request.method == 'GET':
if request.cookies.get('username'):#如果能獲取到cookie儲存的資訊
return redirect('/userCenter')#重定向到另一個路由進行驗證
else:
return render_template('login.html')#重定向到登入介面
如上,看看請求的方式是"get"還是"post",再進一步進行驗證
二、關於使用資料庫
這裡主要講一些單個問題
1、連線資料庫
(1)sqlite3.connect(“要連線的資料庫”) 會預設檢測有沒有資料庫,如果沒有的話就會建立一個。
conn = sqlite3.connect('database.db')
cursor = conn.cursor()# 獲取遊標物件
(2)填寫具體詳細資訊
db=pymysql.connect(
host='127.0.0.1',
user='123456',
password='123456',
database='students',
)
cursor = db.cursor()
2、當使用sql語句時有變數怎麼辦
cursor.execute("SELECT password FROM user WHERE username = ?", (username, ))
用圖上方法,以"?"代替
3、一些函式的認識
result = cursor.fetchone()# 獲取一行資料
data1 = cursor.fetchall() # 得到資料庫中所有資料 是一個二維元組
三、當面臨這些問題時
1、這樣寫更簡便
data = request.form
username = data.get('username')
password = data.get('password')
2、當要檢測賬號和密碼是否存在時
if not username or not password:#檢測賬號和密碼是否存在
return render_template('login.html', message='Invalid username or password')
這裡的message與前端的HTML頁面的message相對應