flask一、配置参数、路由、视图、正则匹配路由、异常捕获、请求钩子、cookie、session描述结构图和代码

一、配置参数、路由、视图操作、自定义正则

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)

猜你喜欢

转载自blog.csdn.net/weixin_42670402/article/details/84402725