一、视图函数路由规则
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)