flask 路由功能

默认代码

from flask import Flask


# 创建flask应用对象
# __name__表示当前模块的名字
# flask 以这个模块所在目录为总目录,默认这个目录的static为静态目录,templates为模板目录
app = Flask(__name__)

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

if __name__ == "__main__":
    # 启动flask程序
    app.run(debug=True)

1、查看所有路由

通过url_map可以查看整个flask的路由信息
print(app.url_map)
在这里插入图片描述

2、利用methods限制访问方式

@app.route("/post_only", methods=["POST"])
def post_only():
	return "post only page"

在这里插入图片描述

3、同一路由装饰多个视图函数

@app.route("hello")
def hello():
	return "hello1"
	
@app.route("hello")
def hello2():
	return "hello2"

此时依旧显示hello1。因为同一路由可能以不同的method访问。

4、同一视图多个路由装饰器

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

此时两个路径都可以访问过去。

5、重定向 与 url_for反解析

from flask import Flask,redirect
······
@app.route("/login")
def login():
	# url="/"
	url=url_for("index")
	return redirect(url)

6、动态路由

路由传递的参数默认当做string处理,这里指定int,尖括号冒号后面的内容是动态的。

@app.route('/user/<int:id>')
def userinfo(id):
	return 'the ID is %d'%id

不加尖括号,是默认的字符串规则
在这里插入图片描述

7、自定义转换器

from flask import Flask
from werkzeug.routing import BaseConverter

# 定义自己的转换器
class Regex_url(BaseConverter):
	def __init__(self,url_map,*args):
		# 调用父类的初始化方法
		super(Regex_url,self).__init__(url_map)
		# 将正则表达式的参数保存在对象的属性中,flask会使用这个属性来进行路由的正则匹配
		self.regex=args[0]
	
	# 自己可设置最终返回值
	def to_python(self,value):
		return value

	# 设置url_for的返回值
	def to_url(self,value)
		return value

app=Flask(__name__)
# 将自定义的转换器添加到flask应用中
app.url_map.converters['re']=Regex_url

@app.route('/user/<re("[a-z]{3}"):ID>')
def zhq_demo(id):
	return 'the ID is %d'%d
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值