後的部分為步驟3講解和認識Cookie與Session
產生SQLite資料庫檔案:
(env) D: \db\src> python
from guestbook import db
db.create_all()
切換到虛擬環境再執行Python
最後輸入db的creat_all即可建立
Cookie
用戶端 Cookie(餅乾):瀏覽器在用戶端儲存的少量資料(不超過4KB),像餐廳的桌號。
Session
伺服器端 Session(會談):在伺服器端保存目前連線用戶的資料;Session必須和 Cookie 搭配使用。像餐廳的訂單,上面有桌號以及點餐容內。
Cookie例:
from flask import Flask, request, make_response
app = Flask (__name__)
@app.route(' / ')
def index():
if not request.cookies.get('user'):
res = make_response('設定Cookie…')
res. set_cookie( 'user', 'Maker', max_age=60*3)
else:
usr = request.cookies['user']
res = f' {usr}你好!'
return res
此程式碼是在首頁讀取及設定 cookie的程式碼,當使用者請求此首頁時,程式將嘗試從用戶的「HTTP請求」取得名叫 Lser”的 cooke 資料,如果沒有的話,則透過「HTTP 回應物件」的 set cookie() 方法設定一個user值為Maker的 cookie
request.cookies.get('資料名稱')
回應物件.set_cookies(「資料名稱', '值', max_age=保存秒值)
Session例:
from datetime import timedelta
from flask import (Flask, redirect, render_template, request, session, url_for)
app = Flask (__name__)
app.config['SECRET_KEY'] = b'_5#y2L"F4Q8z\nlxec]/'
設定密鑰
app.config['PERMANENT_SESSION_LIFETIME'] = timedelta (minutes=3)
設定有效時間,3分鐘
@app.route(' /')
def index():
if 'user' in session:
usr = session['user']
return f'歡迎回來,{usr}!\
<br><a href="/logout">登出</a>'
return '路人甲你好!'
@app.route ('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST' :
session['user'] = request.form['user']
session.permanent = True
return redirect(url_for('index'))
return render_template('login_session.html')
@app.route('/logout')
def logout():
session.pop('user', None)
return redirect(url_for('index'))