前段時間寫微服務用到了 Flask, 後來使用 SpringBoot 了,就沒怎麼用了,如今想邊看官方文檔邊記筆記來複習和提升一哈。html
Web 框架基本處理過程:
json
- 客戶端發起 HTTP Request - Web 應用根據 URL Route 找到對應的處理函數 - 解析 Request 中傳遞的數據 & 進行相關處理操做 - 返回給客戶端 Response
from flask import Flask, app = Flask(__name__)
@app.route('/', method=['POST', 'GET']) def handle(): pass
@app.route('/', method=['POST', 'GET']) def handler(): args = request.args # 跟在 url 後面的參數 form = request.form # form 表單參數 data = request.get_json() # request body 參數 file = request.files # 文件數據
能夠以 (response, statue_code) 的形式返回flask
@app.route('/') def handler(): # 1. 返回渲染的模板 response = render_template('index', name=name)) # 2. 返回字符串 response = 'hello...' # 3. 返回對象的 jsonify response = jsonify([1, 2, 3])
@app.route('/') def handler(): # url_for('A') 返回函數名爲 A 的 route 路由地址 return redirect(url_for('login'))
@app.route('/') def handler(): abort(404)
@app.errorhandler(404) def page_not_found(error): return render_template('page_not_found.html'), 404
@app.route('/') def handler(): # 獲取 Cookies username = request.cookies.get('username') # 設置 Cookies resp = make_response(render_template(...)) resp.set_cookie('username', 'the username') return resp
@app.route('/') def handler(): session.get('username', None) session.pop('username', None) return redirect(url_for('index'))
@app.route('/login', methods=['GET', 'POST']) def login(): error = None if request.method == 'POST': if request.form['username'] != 'admin' or \ request.form['password'] != 'secret': error = 'Invalid credentials' else: # 在頁面跳轉的"緩衝頁面" flash('You were successfully logged in') return redirect(url_for('index')) return render_template('login.html', error=error)
app.logger.dubug() app.logger.warning() app.logger.error()