Flask框架 之路由

一、视图函数路由规则

from flask import Flask, redirect, url_for

# 创建flask应用对象
# __name__ 代表当前模块名称
# flask以当前目录为总目录,static目录为静态目录,templates为模版目录
app = Flask(__name__)


@app.route("/")
def index():
    """定义视图函数"""
    return "hello world"


# 通过methods限定访问方式
@app.route("/post", methods=["POST"])
def post():
    return "do post"


@app.route("/hi1")
@app.route("/hi2")
def hi():
    return "hi page"

@app.route("/login")
def login():
    # 使用url_for函数通过视图函数的名字找到url路径
    url = url_for("index")
    return redirect(url)

if __name__ == '__main__':
    # 查看所有的路由
    print(app.url_map)
    # 启动应用程序
    app.run(debug=True)

二、路由参数提取与自定义转换器

from flask import Flask, redirect, url_for
from werkzeug.routing import BaseConverter

# 创建flask应用对象
# __name__ 代表当前模块名称
# flask以当前目录为总目录,static目录为静态目录,templates为模版目录
app = Flask(__name__)


# 路由转换器 int,float,path
# http://127.0.0.1:5000/goods/12
@app.route("/goods/<int:goods_id>")
# @app.route("/goods/<goods_id>") 也可以
def goods_detail(goods_id):
    return "goods_detail_%s" % str(goods_id)


# 1、自定义转化器
class RegexConvert(BaseConverter):
    def __init__(self, url_map, regex):
        # 调用父类初始化方法
        # super(RegexConvert, self).__init__(url_map)
        BaseConverter.__init__(self, url_map)
        # 将正则表达式保存到对象属性中,flask会使用这个属性来路由正则匹配
        self.regex = regex


# 2、将自定义的转化器添加到flask中
app.url_map.converters["re"] = RegexConvert


# 3、使用
@app.route("/send/<re(r'1[34578]\d{9}'):mobile>")
# http://127.0.0.1:5000/send/18612345678
def send_sms(mobile):
    return "send sms to %s" % mobile

@app.route("/")
def index():
    url = url_for("send_sms", mobile = "18612345678")
    return redirect(url)


if __name__ == '__main__':
    # 查看所有的路由
    print(app.url_map)
    # 启动应用程序
    app.run(debug=True)
posted @ 2019-06-11 23:03  样子2018  阅读(271)  评论(0编辑  收藏  举报