【Flask 筆記】基本篇

前言

前段時間寫微服務用到了 Flask, 後來使用 SpringBoot 了,就沒怎麼用了,如今想邊看官方文檔邊記筆記來複習和提升一哈。html

Web 框架基本處理過程:json

- 客戶端發起 HTTP Request
- Web 應用根據 URL Route 找到對應的處理函數 
- 解析 Request 中傳遞的數據 & 進行相關處理操做
- 返回給客戶端 Response

Flask 窺探

1. 建立 Flask Web 應用

from flask import Flask,
app = Flask(__name__)

2. Route 路由設置 & 請求方式

@app.route('/', method=['POST', 'GET'])
def handle():
    pass

3. HTTP Request 請求參數解析

@app.route('/', method=['POST', 'GET'])
def handler():
    args = request.args        # 跟在 url 後面的參數
    form = request.form        # form 表單參數
    data = request.get_json()  # request body 參數
    file = request.files       # 文件數據

4. HTTP Response 基本形態

能夠以 (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])

5. HTTP Request 請求重定向

@app.route('/')
def handler():
    # url_for('A') 返回函數名爲 A 的 route 路由地址
    return redirect(url_for('login'))
@app.route('/')
def handler():
    abort(404)

6. HTTP 狀態異常處理

@app.errorhandler(404)
def page_not_found(error):
    return render_template('page_not_found.html'), 404

7. HTTP Cookies

@app.route('/')
def handler():
    # 獲取 Cookies
    username = request.cookies.get('username')
    
    # 設置 Cookies
    resp = make_response(render_template(...))
    resp.set_cookie('username', 'the username')
    return resp

8. HTTP Session

@app.route('/')
def handler():
    session.get('username', None)
    session.pop('username', None)
    return redirect(url_for('index'))

9. Flask Flashed

@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)

10. Flask Log

app.logger.dubug()
app.logger.warning()
app.logger.error()

參考

https://dormousehole.readthed...cookie

相關文章
相關標籤/搜索