码迷,mamicode.com
首页 > 其他好文 > 详细

6Flask的正则使用

时间:2019-12-01 15:14:20      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:视图   sel   from   添加   end   解析   导入   reg   反向解析   

Flask的正则使用

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

app = Flask(import_name=__name__)

class RegexConverter(BaseConverter):
    """
    自定义URL匹配正则表达式
    """
    def __init__(self, map, regex):
        super(RegexConverter, self).__init__(map)
        self.regex = regex

    def to_python(self, value):
        """
        路由匹配时,匹配成功后传递给视图函数中参数的值
        """
        #value就正则匹配出来的结果
        print('value',value,type(value))
        return "asdasdasd"

    def to_url(self, value):
        """
        使用url_for反向生成URL时,传递的参数经过该方法处理,返回的值用于生成URL中的参数
        """
        val = super(RegexConverter, self).to_url(value)
        print("to_url>>>:",val)
        return val
# 添加到flask中
# 我们要用自定义的路由,用正则的话
#1导入from werkzeug.routing import BaseConverter
# 2我先要写一个类,然后继承BaseConverter,然后实现__inti__, def to_python(self, value):to_url(self, value)
# 3 app.url_map.converters['谁便'] = RegexConverter
#4 我们在路由里面@app.route('/index/<regex1("\d+"):nid>'),regex1='谁便,regex1("正则表达式")
#5 regex1("正则表达式")匹配出来的结果,返回to_python,一定要return
#6 当我们做反向解析的解析的时候,我们的参数,会传递给to_url,return的结果才是我们拼接到我们路由上

app.url_map.converters['regex1'] = RegexConverter
@app.route('/index/<regex1("\d+"):nid>',endpoint="sb")
def index(nid):
    print("nid",nid,type(nid))
    print(url_for('sb', nid='888'))
    # /index/666
    return 'Index'

if __name__ == '__main__':
    app.run()

6Flask的正则使用

标签:视图   sel   from   添加   end   解析   导入   reg   反向解析   

原文地址:https://www.cnblogs.com/suren-apan/p/11966144.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!