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