• @app.route(’/user/<username>’)
  • @app.route(’/post/<int:post_id>’)
  • @app.route(’/post/<float:post_id>’)
  • @app.route(’/post/<path:path>’)
  • @app.route(’/login’, methods=[‘GET’, ‘POST’])

常用路由系统有以上五种,所有的路由系统都是基于以下对应关系来处理:

DEFAULT_CONVERTERS = {
         'default': UnicodeConverter, #字符串
          'string': UnicodeConverter, #字符串
           'any': AnyConverter,
          'path': PathConverter,
          'int': IntegerConverter,
          'float': FloatConverter,
          'uuid': UUIDConverter, }

 
自定义路由系统:
from flask import Flask, views, url_for
from werkzeug.routing import BaseConverter  #所有路由匹配都来自于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):
'''
路由匹配时,匹配成功后传递给视图函数中参数的值
:param value:
:return:
'''
        return int(value)

    def to_url(self, value):
'''
使用url_for反向生成url时,传递的参数经过该方法处理,返回的值用于生成url中的参数
:param value:
:return:
'''
        val = super(RegexConverter, self).to_url(value)
        return val

# 添加到flask中
app.url_map.converters['regex'] = RegexConverter

@app.route('/index/<regex("\d+"):nid>')
def index(nid):
    print(nid, type(nid))
    print(url_for('index', nid=nid))
    return 'index'

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

最新文章

  1. 文本框focus之后高亮背景颜色
  2. Elastic学习第一天遇到的问题以及添加的一些操作
  3. C# serialport
  4. 中南民航如何利用K2BPM构建业务流程?
  5. 【JavaScript】HTML5存储方案
  6. ASP.NET发布WebService
  7. angular的post请求,SpringMVC后台接收不到参数值的解决方案
  8. hadoop Yarn 编程API
  9. 完美让IE兼容input placeholder属性的jquery实现
  10. leetcode先刷_Climbing Stairs
  11. C# 中使用WebClient 请求 https
  12. js拾遗:appendChild 添加移动节点
  13. MHN蜜罐系统建设
  14. 使用mysql proxy对数据库进行读写分离
  15. EHlib在数据单元中显示字段值为图形。
  16. spring 接收前台ajax传来的参数的几个方法
  17. Redis 连接命令
  18. Spring Boot 运作原理
  19. 在 Sublime Text 2 中编译和运行 Java 程序,以及输出中文出错问题解决办法
  20. Hexo 最常用的几个命令

热门文章

  1. 16.java八皇后问题
  2. Python系统模块os.py和sys.py常用函数
  3. 26 docker 安装 solr
  4. vue3.0 dialog无法弹出的问题
  5. etcd 入门
  6. python图片转base64、base64转图片
  7. Mybatis二级缓存(1)
  8. docker 安装 elasticsearch7.6.2 kibana7.6.2
  9. 调度器44—root_domain—更新路径
  10. Visusl Studio使用技巧