一.蓝图
1.概念
蓝图也可称为规划,主要用来规划urls(路由),也就是帮助我们找到路径。
2.基本使用
- 安装:
pip install flask-blueprint - 在视图函数中,创建蓝图对象:
blue = Blueprint(‘蓝图的名字’,name) - 将app.route修改为blue.route()
一个企业级项目,会有很多的这样的类似的视图函数。
所有的代码都在manager中来书写,这样看起来比较乱,而且没有分层,所以我们要封装,将flask的代码修改为mtv的架构。
- 在manager中注册蓝图:
app.register_blueprint(blueprint=blue)
3.init文件关联
App是个python的文件夹,里面有static、templates、views、init文件。
与App同级的有一个manager的文件。
1.在init文件中,调用create_app()方法,返回app对象。
2.在manager文件中,添加app= create_app()。
create_app的方法返回的就是app对象和Flask (_name_)的作用是一致的。
结论:
1.App和manager是通过init建立关联的
2.路由是写在views里的,路径的问题是通过蓝图来解决
二.Flask路由参数
1.概念
参数种类:1.路由参数 2.请求参数
路由参数:127.0.0.1:5000/index/1/(主机+端口号+资源路径)
请求参数:127.0.0.1:5000/index?name=zhangsan/
2.基本使用
当在路由中定义了路由参数,那么必须要在视图函数中去添加参数。
其中获得路由参数的值,默认情况下是str类型的。
在视图函数中添加:
@blue.route('/testRoute/<id>/')
def testRoute(id):
print(id)
print(type(id))
return 'testRoute'
运行结果:
云服务器上显示:
1.路由参数-string
@blue.route('/testString/<string:s>/')
def testString(s):
print(s)
print(type(s))
return 'testString'
运行结果:
云服务器上显示:
2.路由参数-path
@blue.route('/testPath/<path:p>/')
def testPath(p):
print(p)
print(type(p))
return 'testPath'
运行结果:
云服务器上显示:
string和path的区别:
string 接收的时候也是str, 匹配到 / 的时候是匹配结束。
path 接收的时候也是str, / 只会当作字符串中的一个字符处理。
3.路由参数-int
@blue.route('/testInt/<int:i>/')
def testInt(i):
print(i)
print(type(i))
return 'testInt'
4.路由参数-float
@blue.route('/testFloat/<float:f>/')
def testFloat(f):
print(f)
print(type(f))
return 'testFloat'
注意:传递的路由参数,必须是float类型,不允许是整型的。
5.路由参数-uuid
uuid是一个数据类型。
@blue.route('/getuuid/')
def getuuid():
u = uuid.uuid4()
print(u)
return 'getuuid'
或者:
@blue.route('/testUuid/<uuid:u>/')
def testUuid(u):
print(u)
print(type(u))
return 'testUuid'
6.路由参数-any
@blue.route('/testAny/<any(a,b):p>/')
def testAny(p):
print(p)
print(type(p))
return 'testAny'
any中必须指定的字符来传递(a或b),any中只能存储字符。
三.postman
1.安装
可在Windows上安装postman软件,安装地址:https://www.postman.com/downloads/
2.基本介绍
postman是模拟请求工具,方法参数中可添加methods=[‘GET’,‘POST’]
默认支持GET,HEAD,OPTIONS
如果想支持某一请求方式,需要自己手动指定
在route方法中,使用methods=[“GET”,“POST”,“PUT”,“DELETE”]
@blue.route('/testPostMan/',methods=['post','Get','put','patch','delete'])
def testPostMan():
return 'testPostMan'
注意:
- 模拟请求方式的工具,默认flask的视图函数,只能接受get、head、options三种请求方式的路由。
- 通过浏览器去访问的一般都是get请求方式
- 页面显示404表示路径的错误 ,显示405表示请求方式错误
- 如果想让路由支持某一种请求方式,那么可以在route方法中添加methods=[’post’]
- 如果指定了请求方式,那么默认的请求方式将不好用
- 请求方式是不区分大小写的
四.反向解析
1.概念
正常我们执行请求资源路径,然后调用方法,反向解析就是通过方法来获取请求资源路径。
2.格式
url_for(蓝图的名字.方法名字)
3.使用
@blue.route('/demo/')
def demo():
return 'demo'
@blue.route('/testUrlfor/')
def testUrlfor():
# url_for('蓝图的名字.方法名字(就是你想获取那个路径的方法的名字)')
a = url_for('first.demo')
print(a)
return 'testUrlfor'
运行结果:
云服务器上显示:
转载:https://blog.csdn.net/yuanfate/article/details/105475756