一、配置参数、路由、视图操作、自定义正则
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)