flask一、配置引數、路由、檢視、正則匹配路由、異常捕獲、請求鉤子、cookie、session描述結構圖和程式碼
阿新 • • 發佈:2018-12-02
一、配置引數、路由、檢視操作、自定義正則
from flask import Flask, jsonify, redirect, url_for from werkzeug.routing import BaseConverter app = Flask(__name__, static_url_path='/static', static_folder='static', template_folder='static' ) class MyConverter(BaseConverter): '''自定義正則匹配路由''' def __init__(self, url_map, *args): super(MyConverter, self).__init__(url_map) self.regex = args[0] # def to_python(self, value): # return "處理過了:%s"%str(value) def to_url(self, value): return str(value)[0:3] app.url_map.converters['re'] = MyConverter @app.route('/phone/<re("[0-9]{3}"):pk>') def index(pk): return pk @app.route('/json_infor', methods=['GET', 'POST']) def json_infor(): '''jsonfy使用''' dic = { "name": "ty", "age": "18" } return jsonify(dic) @app.route('/user/<int:pk>') def user_pk(pk): '''獲取引數''' return 'userpk:%s' % pk @app.route('/find') def find(): '''帶引數重定向''' return redirect(url_for('index', pk=55563)) @app.route('/code') def code(): '''修改狀態碼''' return '狀態碼666', 666 if __name__ == '__main__': app.run(host='127.0.0.1', port=5000, debug=True)
二、捕獲異常
from flask import Flask, abort app = Flask(__name__) @app.route('/') def index(): abort(404) return 'hello world' @app.errorhandler(404) def error(err): '''錯誤頁面處理''' return '沒找到頁面' @app.errorhandler(ZeroDivisionError) def error(err): return '沒找到頁面' if __name__ == '__main__': app.run(debug=True)
三、請求鉤子
from flask import Flask app = Flask(__name__) @app.route('/') def index(): return 'hello world' @app.before_first_request def before_first_request(): print('before_first_request') @app.before_request def before_request(): print('before_request') @app.after_request def after_request(response): print('after_request') return response @app.teardown_request def teardown_request(err): print(err) if __name__ == '__main__': app.run(debug=True)
四、cookie用法
from flask import Flask, make_response, request
app = Flask(__name__)
@app.route('/')
def index():
return 'hello world'
@app.route('/cookie')
def set_cookie():
'''設定cookie'''
resp = make_response('this is to set cookie')
resp.set_cookie('username', 'ty', max_age=3600)
return resp
@app.route('/request')
def get_cookie():
'''獲取cookie'''
resp = request.cookies.get('username')
return resp
if __name__ == '__main__':
app.run(debug=True)
五、session用法
from flask import Flask, session, redirect, url_for
app = Flask(__name__)
app.config['SECRET_KEY'] = 'fndkfnsdf'
@app.route('/')
def index():
return session.get('username')
@app.route('/index1')
def index1():
session['username'] = 'ty'
return redirect(url_for('index'))
if __name__ == '__main__':
app.run(debug=True)