Python学习笔记(十)----Flask使用

/*

Flask是python上一个非常轻量的框架,用来搞搞接口还挺方便的,不管部署还是开发,一目了然。

*/

一、Flask安装

pip install flask
 

二、最小结构

from flask import Flask         #导入包中的Flask
app = Flask('demo')             #初始化一个实例
​
@app.route('/')                 #定义一个路由(默认http://127.0.0.1:5000)
def index():                    #定义访问该url时调用的方法
    return 'hello world'        #返回的content
​
app.run()                       #完成初始化工作后,运行实例

三、路由详解

1 .基本路由定义

@app.route('/')             #http://127.0.0.1:5000
def index():
    return 'hello'
@app.route('/hello')        #http://127.0.0.1:5000/hello
def index():
    return 'hello'
#http://127.0.0.1:5000/hello,methods中限定访问的方式
​
@app.route('/hello',methods=['GET','POST'])     
def index():
    return 'hello'
#当访问<http://127.0.0.1:5000/子目录>时,会把子目录传到index函数中的id参数里
#注意,在定义这个路由时<id>与index(id) 这两个地方的id 名称要一样
#当访问<http://127.0.0.1:5000/子目录1/子目录2>时,不会匹配到这个路由
​
@app.route('/<id>')
def index(id):
    return id
#可以匹配id的具体类型,常用包括
#string
#int
#float
#path
​
#id为float类型
@app.route('/<float:id>')
def index(id):
    return id
    
#id为int类型
@app.route('/<int:id>')
def index(id):
    return id
​
#id为string类型
@app.route('/<string:id>')
def index(id):
    return id
​
#id为path类型,此时可以访问<http://127.0.0.1:5000/子目录1/子目录2>
@app.route('/<path:id>')
def index(id):
    return id

2.扩展路由匹配规则

wekzeug.routing,用于扩充routing匹配规则,使之不限于string、int、float、path

#导入werkzeug文件夹中的routing.py里的BaseConverter(是一个类)
from werkzeug.routing import BaseConverter 
​
#扩展BaseConverter这个类,例如扩展为RegexConverter
class RegexConverter(BaseConverter):
    def __init__(self,url_map, regex):
        super(RegexConverter,self).__init__(url_map)
        #重新赋值 父类的正则表达式
        self.regex = regex
    
    #value是从浏览器传来的值,重写该方法,
    #返回值将传到route对应的函数(index)中的value
    #比如这里value为 v 是,index函数将接受到 v000
    def to_python(self, value):
        print('to_python : '+str(value))
        return value+'000'
        
​
#在flask中注册这个类,也称作<转换器>
#<re>是在app.route中使用时的名称
app.url.map.converters['re'] = RegexConverter
​
#定义处理函数
@app.route('/<re("123"):value>')
def index(value):
    return value
    
#注意,RegexConverter构造函数带参,参数在定义app.route时传进去,达能构造函数不带参数时
#可以写作
# @app.route('/<re():value>')
#或者写作
# @app.route('/<re:value>')

                
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值