flask转换器类中to_python 和 to_url 区别
2020-12-13 03:46
标签:red config 原理 converter app style tco import bsp flask框架中,转换器是一个较常用的对象。其常规的转换器有 int,float,path,any,string,default,uuid七个转换器,其中默认是字符串转换器。若想匹配特定的url路径,需要定义自己的转换器类。转换器类中有两个方法to_url和to_python都是用来对客户请求路径进行匹配的。其中to_url是在重定向时,依赖url_for函数匹配建立用户的路径。匹配正确后,通过to_python方法,将路径返回给对应的视图函数。 转换器的匹配原理是用户输入请求后,将路径与转换器的self.regex进行匹配。匹配成功后,将路径通过to_python传递给视图函数,返回客户请求。这是常规的匹配路径流程。当客户路径是通过重定向的,则首先通过url_for函数形成匹配的新路径,此匹配的新路径的形成流程是:url_for会调用to_url 形成路径,然后与视图函数匹配。成功后,将路径通过to_python函数将路径传递给视图函数,返回用户请求。 以一个例子描述上述过程: 调试: 通过输入127.0.0.1:5000/static/1234 可以查看上述调用list转换器的流程。 flask转换器类中to_python 和 to_url 区别 标签:red config 原理 converter app style tco import bsp 原文地址:https://www.cnblogs.com/xuehaiwuya0000/p/11087318.htmlfrom flask import Flask
#from flask import request
from flask import jsonify
from flask import redirect
from flask import url_for
from werkzeug.routing import BaseConverter
import json
app= Flask(import_name="__name__")
class ReguConverter(BaseConverter):
def __init__(self,map,*args):
super(ReguConverter, self).__init__(map)
self.regex=args[0]
class ListConverter(BaseConverter):
def __init__(self,map ,*args):
super(ListConverter, self).__init__(map)
self.regex=args[0]
def to_python(self, value):
print("匹配后",value)
return value.split(",")
def to_url(self, value):
value+="7890"
print(" 匹配之前,",value)
s1=",".join(value)
return s1
app.url_map.converters["list"]=ListConverter
app.url_map.converters["regu"]=ReguConverter
@app.route("/static/
")
def out3(a):
print("参数a被调用后",a)
return "hello"+str(a)
@app.route("/static/
上一篇:虚拟化布署WEB服务-问题解决
文章标题:flask转换器类中to_python 和 to_url 区别
文章链接:http://soscw.com/essay/28272.html