6Flask的正则使用

Posted suren-apan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了6Flask的正则使用相关的知识,希望对你有一定的参考价值。

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的正则使用的主要内容,如果未能解决你的问题,请参考以下文章

asp.net 使用正则表达式验证包含打开/关闭括号片段的属性字符串

循环通过 python 正则表达式匹配

text 正则表达式片段

markdown 正则表达式模式片段

正则表达式匹配特定的 URL 片段而不是所有其他 URL 可能性

js正则验证,邮箱,身份证