• @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()

Flask----常用路由系统及自定义路由系统的更多相关文章

  1. WPF自学入门(四)WPF路由事件之自定义路由事件

    在上一遍博文中写到了内置路由事件,其实除了内置的路由事件,我们也可以进行自定义路由事件.接下来我们一起来看一下WPF中的自定义路由事件怎么进行创建吧. 创建自定义路由事件分为3个步骤: 1.声明并注册 ...

  2. MVC路由学习:自定义路由参数(用户看不到参数名),重新定义路由规则

    MVC路由:由于路由global中注册了,在程序第一次运行时,在MVC会自动生成路由,类似于字典的格式缓存下来,但路由生成的规则又是怎样的呢? 路由生成规则是: 1>更具你定义的的顺序查找路由规 ...

  3. DRF内置认证组件之自定义认证系统

    自定义token认证 我们知道,在django项目中不管路由以及对应的视图类是如何写的,都会走到 dispatch 方法,进行路由分发, 在阅读 APIView类中的dispatch 方法的源码中,有 ...

  4. .NET/ASP.NET Routing路由(深入解析路由系统架构原理)

    阅读目录: 1.开篇介绍 2.ASP.NET Routing 路由对象模型的位置 3.ASP.NET Routing 路由对象模型的入口 4.ASP.NET Routing 路由对象模型的内部结构 4 ...

  5. .NET/ASP.NET Routing路由(深入解析路由系统架构原理)http://wangqingpei557.blog.51cto.com/1009349/1312422

    阅读目录: 1.开篇介绍 2.ASP.NET Routing 路由对象模型的位置 3.ASP.NET Routing 路由对象模型的入口 4.ASP.NET Routing 路由对象模型的内部结构 4 ...

  6. NET/ASP.NET Routing路由(深入解析路由系统架构原理)(转载)

    NET/ASP.NET Routing路由(深入解析路由系统架构原理) 阅读目录: 1.开篇介绍 2.ASP.NET Routing 路由对象模型的位置 3.ASP.NET Routing 路由对象模 ...

  7. 一、ASP.NET Routing路由(深入解析路由系统架构原理)

    阅读目录: 1.开篇介绍 2.ASP.NET Routing 路由对象模型的位置 3.ASP.NET Routing 路由对象模型的入口 4.ASP.NET Routing 路由对象模型的内部结构 4 ...

  8. django路由系统及分发路由的本质

    路由系统 当我们启动一个django项目后,想要通过浏览器访问到django项目中的资源 就需要在django中的urls项目中进行路由配置 urlpatterns = [ url(r'^admin/ ...

  9. YbSoftwareFactory 代码生成插件【二十四】:MVC中实现动态自定义路由

    上一篇介绍了 公文流转系统 的实现,本篇介绍下MVC下动态自定义路由的实现. 在典型的CMS系统中,通常需要为某个栏目指定个友链地址,通过指定友链地址,该栏目的地址更人性化.方便记忆,也有利用于搜索引 ...

  10. Web API配置自定义路由

    默认访问Web API时,是无需指定method名.它会按照默认的路由来访问.如果你的Web API中出现有方法重载时,也许得配置自定义路由: 标记1为自定义路由,标记2为默认路由,需要把自定义路由排 ...

随机推荐

  1. 一套 .NET开发的邮箱Mail开源库

    今天给大家推荐一个基于.Net开发的邮箱开源库. 邮箱在我们日常工作中,可以说是非常常见了.个人邮箱一般都是免费的,但企业邮箱会收费,虽然一般情况下,市面邮箱已经够用了.但有些企业对内容安全要求比较严 ...

  2. 对前三次PTA作业的总结

    一.前言 通过对前三次PTA作业的总结,其中蕴含着不少知识点.它让真正开始接触Java的我一点一点的渗入其中.其包含的知识点有Java代码的大体结构,例如: public class Main{ pu ...

  3. docker-compose任务编排

    一.docker-compose介绍 使用一个Dockerfile模板文件可以定义一个单独的应用容器,如果需要定义多个容器就需要服务编排.下面介绍Docker官方产品,Docker Compose. ...

  4. (0709) Linux-命令(scp,tar) zip

    (1) scp .bashrc root@192.168.1.6:vnc://cfy-hp-notebook-pc.local (2) tar -czvf a.tar.gz b            ...

  5. go 使用mysql

    package main /* 下划线(如:import _ hello/imp)的作用:当导入一个包时,该包下的文件里所有init()函数都会被执行, 然而,有些时候我们并不需要把整个包都导入进来, ...

  6. python的GIL全局解释器锁

    global interpreter lock -- 全局解释器锁 CPython 解释器所采用的一种机制,它确保同一时刻只有一个线程在执行 Python bytecode.此机制通过设置对象模型(包 ...

  7. onnxruntime源码解析之C接口实现

    onnxruntime的C接口,位置为include/onnxruntime/core/session/onnxruntime_c_api.h. 上述文件包含了C函数的声明,对应的实现在onnxrun ...

  8. 【Python】Python 技巧集锦(长期更新)

    [Basic] 『List Comprehensions』 『Python 中 map(), filter(), reduce() 和 zip() 函数的用法』 『Python 中关于下划线 '_'  ...

  9. SQL Server【提高】碎片

    碎片 当对索引所在的基础数据表进行增删改时,若存储的数据进行了不适当的跨页(SQL Server中存储的最小单位是页,页是不可再分的),就会导致索引碎片的产生. 外部碎片 插入的数据使页与页之间造成断 ...

  10. Rest-Assured:发送PATCH请求:更新Hello-imook(java.lang.IllegalArgumentException: Invalid number of path parameters. Expected 2, was 0. Undefined path parameters are: owner, repo.)

    代码: /*     * 发送PATCH请求:更新Hello-imook     */    @Test    public void test003_PatchMethod() {        S ...