8 flask之路由系统

1 默认method是get

main.py

from flask import Flask, request, render_template, redirect

app = Flask(__name__)


@app.route('/login')
def login():
    if request.method == "GET":
        return render_template('login.html', a1=1)
    else:
        # request.query_string
        user = request.form.get('user')
        pwd = request.form.get('pwd')
        if user == 'dzg' and pwd == '123':
            return redirect('http://www.baidu.com')
        return render_template('login.html', error='用户名或密码错误')


if __name__ == '__main__':
    app.run()

login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>login</title>
</head>
<body>
    <h1>用户登录</h1>
    <form method="post">
        <input type="text" name="user">
        <input type="text" name="pwd">
        <input type="submit" value="登录">{{error}}
    </form>
</body>
</html>

 

 

 

 

 

2 典型写法

endpoint 相当于起别名

@app.route('/detail/<int:id>', methods=['GET'], endpoint='detail')
def detail(id):
    pass

3 默认转换器

DEFAULT_CONVERTERS = {
    'default':          UnicodeConverter,
    'string':           UnicodeConverter,
    'any':              AnyConverter,
    'path':             PathConverter,
    'int':              IntegerConverter,
    'float':            FloatConverter,
    'uuid':             UUIDConverter,
}

4 路由系统本质

"""
1. decorator = app.route('/',methods=['GET','POST'],endpoint='n1')
    def route(self, rule, **options):
        # app对象
        # rule= /
        # options = {methods=['GET','POST'],endpoint='n1'}
        def decorator(f):
            endpoint = options.pop('endpoint', None)
            self.add_url_rule(rule, endpoint, f, **options)
            return f
        return decorator
2. @decorator
    decorator(index)
"""
#同理
def login():
    return '登录'
app.add_url_rule('/login', 'n2', login, methods=['GET',"POST"])
#与django路由类似
#django与flask路由:flask路由基于装饰器,本质是基于:add_url_rule
#add_url_rule 源码中,endpoint如果为空,endpoint = _endpoint_from_view_func(view_func),
最终取view_func.__name__(函数名)
posted @ 2022-03-22 23:13  甜甜de微笑  阅读(32)  评论(0编辑  收藏  举报