说明: URL规则可添加变量部分,也就是说将符合同种规则的URL抽象成一个URL模式


1
2
3
@app.route('/instance/<uuid>/')
def instance(uuid):
    return 'Instance: {}'.format(uuid)

注意: 尖括号中内容是动态的,凡是匹配到/instance/前缀的都会被映射到这个路由上,在内部把uuid作为参数而获得,默认类型为字符串

默认转换:

说明: 可通过<converter:variable_name>形式来指定转换方式,converter可以是如下默认转换器,也可以是继承自werkzeug.routing.BaseConverter子类定义的转换器

转换(默认的转换器存储在app.url_map.converts字典里,支持自定义) 简单
string 接收没有任何斜杠/的文本
int 接收整型
float 接收浮点型
path 接收任意文本包含/的文本
uuid 接收唯一识别码
any() 和PY中的内置any用法一致,可指定多肿可选路径,但必须传入参数

扩展: 如上转换都是基于子路径,如果不想使用子路径,其实还可以通过GET/POST传递参数的方式给/instance,然后在视图函数内部通过request.args.get()和request.form.get()来获取实现

定义转换:


说明: FLASK还支持自定义转换器如Rebbit中使用分割符来实现如http://reddit.com/r/python+flask隔开两个社区名字,方便同时查看来自多个社区的帖子,我们可以自定义甚至不一定使用"+"来实现


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
#
# Authors: limanman
# 51CTOBG: http://xmdevops.blog.51cto.com/
# Purpose:
#
"""
# 说明: 导入公共模块
from flask import Flask, jsonify
from werkzeug.routing import BaseConverter
# 说明: 导入其它模块
class ListConverter(BaseConverter):
    def __init__(self, url_map, separator=u'+'):
        super(ListConverter, self).__init__(url_map)
        self.separator = separator
    def to_python(self, value):
        return value.split(self.separator)
    def to_url(self, values):
        values_quoted = []
        for value in values:
            values_quoted.append(BaseConverter.to_url(value))
        return self.separator.join(values_quoted)
app = Flask(__name__)
app.url_map.converters.update({
    'list': ListConverter
})
@app.route('/r/<list(separator=u"+"):page_names>/')
def r(page_names):
    return jsonify(page_names)
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=9000, debug=True)

注意: 继承werkzeug.routing.BaseConverter的类必须实现两个方法to_python(value),它定义了匹配的路径以何种方式传入视图函数,to_url(value),它定义了传入视图函数的参数的路径原型的编码后形式,它是供内部调用,但也是必须实现的方法,最后需要将ListConverter放到app.url_map.converters中去才会运行时生效,按照如上转换器访问http://127.0.0.1:9000/python+flask/时传入视图函数的参数page_names其实是一个被分割的列表[u'python', u'flask'],这样我们就可以模拟Reddit实现同时获取多个社区帖子

提交方法:


说明: HTTP有多个访问URL的方法,默认只响应GET,但可以通过app.route装饰器传递methods参数改变此行为,默认FLASK会自动处理HEAD/OPTIONS请求,常用GET/POST请求但随着AJAX和RESET风格应用的流行,PUT/DELETE/PATCH请求也使用很广泛~


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
#
# Authors: limanman
# 51CTOBG: http://xmdevops.blog.51cto.com/
# Purpose:
#
"""
# 说明: 导入公共模块
from flask import Flask, request, jsonify
# 说明: 导入其它模块
app = Flask(__name__)
@app.route('/', methods=['GET''POST'])
def index():
    return jsonify([
        request.args,
        request.form
    ])
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=9000, debug=True)

说明: GET/POST是我们最常用的方式,至于获取GET/POST请求的参数分别用request.args和request.form来获取通过jsonify生成的响应我们可以看出来其实它们就是两个参数字典

唯一特性:


说明: FLASK的规则都是基于WerkZeug的路由模块,它规定URL唯一,当装饰器@app.route('/instance/')这样时访问/instance时会自动被修改为/instance/,而当装饰器@app.route('/instance')这样时访问/instance/会返回404,必须访问/instance才可以获取到你想要的内容~以此来保证唯一性~

修改web前端访问端口的更多相关文章

  1. web -- 前端访问后台跨区问题解决

    package com.xindatai.ibs.web.filter; import java.io.IOException; import javax.servlet.Filter; import ...

  2. centos7修改xshell默认访问端口由22修改为62058

    1.vim /etc/ssh/sshd_config 2.新加端口62058:Port 62058 3.重启sshd服务:systemctl restart sshd 4.将新加端口添加到防火墙并重启 ...

  3. Linux 修改zabbix server的web访问端口

    在安装zabbix server的时候默认就安装了apache,zabbix依靠apache提供的web服务,修改Zabbix的浏览器访问端口,就是修改apache的服务端口(默认端口:80) 1.编 ...

  4. Maven入门---修改tomcat版本及端口及访问路径(四)

    Maven中通过添加插件修改tomcat版本及端口及访问路径 --------------------------------------------------------------------- ...

  5. 修改panabit web管理介面端口

    panabit使用mini_httpd为web发布平台,版本为1.19.使用https协议发布,端口443,运行命令为/usr/panabit/bin/ipe_httpd. panabit启动时使用/ ...

  6. 使用react全家桶制作博客后台管理系统 网站PWA升级 移动端常见问题处理 循序渐进学.Net Core Web Api开发系列【4】:前端访问WebApi [Abp 源码分析]四、模块配置 [Abp 源码分析]三、依赖注入

    使用react全家桶制作博客后台管理系统   前面的话 笔者在做一个完整的博客上线项目,包括前台.后台.后端接口和服务器配置.本文将详细介绍使用react全家桶制作的博客后台管理系统 概述 该项目是基 ...

  7. Eclipse | 如何修改web项目的访问链接名,项目名

    转: Eclipse | 如何修改web项目的访问链接名,项目名 2018-01-04 17:52:05 Mandsence 阅读数 2180更多 分类专栏: 其他   版权声明:本文为博主原创文章, ...

  8. ADFS修改默认访问端口

    在安装Dynamics CRM部署IFD需要安装ADFS来进行身份验证.而ADFS默认会占用服务器的443端口.如果我们想自己使用443端口的话则需要修改ADFS的默认端口.(如果需要部署移动端的话还 ...

  9. Web前端名词释义及原理

    引言:看题目的时候,不要觉得这是一个很深奥的问题,Web前端这些东西很多就是叫的名字牛逼,其实原理很TM简单,也就那么回事. 一.javascript名词释义 1.啥是事件队列? 就是 弄一个数组,里 ...

随机推荐

  1. C#获取类名为Internet_Explorer_Server控件的内容

    为了让大家都能够使用demo,我以IE为测试对象,另外为了突出重点,所以如何获取窗口句柄我就不做演示了(不清楚的童鞋,可以去Google下哈),句柄值我使用spy++获得 大家可以下载demo(附:s ...

  2. [web前端] npm install -save 和 -save-dev 傻傻分不清

    本文原文地址:https://www.limitcode.com/detail/59a15b1a69e95702e0780249.html 最近在写Node程序的时候,突然对 npm install ...

  3. centos7下安装gcc7

    之前写过在linux下升级gcc 4.8至gcc 4.9的过程,现在gcc最新的版本是8,有些软件必须是gcc 7或者以上的版本才可以编译,比如clickhouse,gcc 7的安装过程和之前基本上一 ...

  4. C# System.IO.File

    using System; using System.IO; class Test { public static void Main() { string path = @"c:\temp ...

  5. Jexus 网站服务器和 ASP.NET 跨平台开发

    微软的跨平台战略 微软在过去的一年多中时间中发生了令整个 IT 行业感到惊叹的变化.这一切始于 Ballmer 的退位和 Nadella 的决心,更始于早已在微软各个基层部门蠢蠢欲动的二次创业. 以开 ...

  6. Android开发中adb启动失败adb连接异常的解决办法

      一.情况描述:   我们在使用eclipse开发有时候会出现adb连接异常中,有时候控制台会打印出来 adb connect异常 比如会出现下面这样 : [2014-12-18 16:18:26 ...

  7. 002_ASP.NET 换主题

    网盘下载地址 http://pan.baidu.com/s/1c1VzIla 在线观看地址 http://www.bamn.cn/course/lesson/2 课程介绍 ASP.NET 实现更换主题 ...

  8. C++中 线程函数为静态函数 及 类成员函数作为回调函数

    线程函数为静态函数: 线程控制函数和是不是静态函数没关系,静态函数是在构造中分配的地址空间,只有在析构时才释放也就是全局的东西,不管线程是否运行,静态函数的地址是不变的,并不在线程堆栈中static只 ...

  9. Linux 命令 及 简单操作 学习

    众所周知,linux命令很多很多,但是,请不用担心,相信你自己不断的积累,终有一天你和你和小伙伴都会为你惊呆的...... 废话不多说,那,什么时候动手????---------现在,马上..... ...

  10. easyui confirm提示框 调整显示位置

    方法一: $.messager.confirm("确认对话框","该客户已经存在!确定:查看该客户 ", function(r){ if(r){ alert(& ...