测试开发——flask视图函数与路由 实战重点

开头必须分享一个我的志玲姐姐,太可了!点击此处
在这里插入图片描述

flask视图函数与路由的关系

  • 一、视图函数与路由 实战重点
    • 1.1 一个视图函数可以绑定多个URL地址
    • 1.2 视图装饰器应该放到最外层
    • 1.3所实现的装饰器要返回视图函数的返回值
  • 二、动态路由
    • 1. 用url匹配
    • 2. 通过传参
  • 三、路由重定向
  • 四、路由注册机制
    • 4.1 集中注册机制
    • 4.2 装饰器注册
  • 五、app.route()可配置的参数
  • 六、视图函数的分离(非常重要)

https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注!
欢迎关注微信公众号:宝藏女孩的成长日记
让这个可爱的宝藏女孩在努力的道路上与你一起同行!
如有转载,请注明出处(如不注明,盗者必究)

一、视图函数与路由 实战重点

1.1 一个视图函数可以绑定多个URL地址

在这里插入图片描述

1.2 视图装饰器应该放到最外层

引入装饰器,装饰器要放到@app.route()里面

在这里插入图片描述

1.3所实现的装饰器要返回视图函数的返回值

比如说我这里直接返回“hello”,此时“hello”就会返回到前端去,就意味着视图函数的返回值就没有用了

在这里插入图片描述
运行结果:
在这里插入图片描述
装饰器正确返回视图函数的返回值:
在这里插入图片描述
运行结果:
在这里插入图片描述

二、动态路由

1. 用url匹配

将id动态地放到url里面 就可以查到id对应的case 例如http://127.0.0.1:5000/test/hello

from flask import Flask# 编写了一个测试用例名称,我们测试返回的结果就是测试用例的名称app = Flask(__name__)#定义路由 <尖括号里面的可以改变>  将id动态地放到url里面 就可以查到id对应的case 例如http://127.0.0.1:5000/test/hello
@app.route('/test/<id>')
def get_case(id):return f'{id}' #字符串格式化if __name__ == '__main__':app.run(debug=True)

运行结果
在这里插入图片描述

2. 通过传参


from flask import Flask, request# 编写了一个测试用例名称,我们测试返回的结果就是测试用例的名称app = Flask(__name__)#定义路由
@app.route('/test')
def get_case():id = request.args.get("id")return f'{id}' #字符串格式化if __name__ == '__main__':app.run(debug=True)

运行结果

在这里插入图片描述

https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注!
欢迎关注微信公众号:宝藏女孩的成长日记
让这个可爱的宝藏女孩在努力的道路上与你一起同行!
如有转载,请注明出处(如不注明,盗者必究)

三、路由重定向

/test/和/test是两个不同的url

from flask import Flask# 编写了一个测试用例名称,我们测试返回的结果就是测试用例的名称app = Flask(__name__)@app.route('/test2/')
def get_case():return "有斜杠,输入url的时候加不加那个/都可以"@app.route('/test1')
def get_case_1():return "没有斜杠,输入的时候不可以有/"if __name__ == '__main__':app.run(debug=True)

至于加不加,演示一下就OK了

四、路由注册机制

路由:url与视图函数的绑定关系 每个绑定关系都会单独命一个名字(这个东西就叫做端点)
app.url_map() 专门用来存储路由关系

from flask import Flask# 编写了一个测试用例名称,我们测试返回的结果就是测试用例的名称app = Flask(__name__)print(app.url_map)@app.route('/test')
def get_case():return "有斜杠,输入url的时候加不加那个/都可以"print(app.url_map)if __name__ == '__main__':app.run(debug=True)

在这里插入图片描述

如果项目比较大的话,比如有200个Url,就最好用集中注册机制,如果Url没几个,就用装饰器注册(@app.route())

4.1 集中注册机制

app.add_url_rule('/a',view_func=get_case)
app.add_url_rule('/b',view_func=get_case_b)

4.2 装饰器注册

@app.route()

五、app.route()可配置的参数

  1. endpoint进行URL构建的时候会有用。endpoint的作用是url和view中间设置的一个桥梁
  2. methds,默认有get,head,option
from flask import Flask# 编写了一个测试用例名称,我们测试返回的结果就是测试用例的名称app = Flask(__name__)print(app.url_map)@app.route('/test',methods=['POST'],endpoint='tests')
def get_case():return "有斜杠,输入url的时候加不加那个/都可以"print(app.url_map)if __name__ == '__main__':app.run(debug=True)

运行效果:
在这里插入图片描述

  1. 重定向
    方法一:@app.route(redirect_to=’/’) 不会去执行视图函数
 @app.route(redirect_to='/')
from flask import Flask# 编写了一个测试用例名称,我们测试返回的结果就是测试用例的名称app = Flask(__name__)
@app.route('/')
def index():return 'this is index'print(app.url_map)@app.route('/test',methods=['POST'],endpoint='tests',redirect_to='/')
def get_case():print("判断一下这个函数有没有运行")return "有斜杠,输入url的时候加不加那个/都可以"print(app.url_map)if __name__ == '__main__':app.run(debug=True)

方法二:视图函数里面redirect()

from flask import Flask, redirect# 编写了一个测试用例名称,我们测试返回的结果就是测试用例的名称app = Flask(__name__)
# @app.route('/')
# def index():
#     return 'this is index'
#
# print(app.url_map)@app.route('/test',methods=['POST'],endpoint='tests')
def get_case():print("判断一下这个函数有没有运行")return redirect('/')print(app.url_map)if __name__ == '__main__':app.run(debug=True)
  1. defaults默认值
    默认参数:1. defaults={‘id’:3}

视图函数 id=3

from flask import Flask, redirect# 编写了一个测试用例名称,我们测试返回的结果就是测试用例的名称app = Flask(__name__)
@app.route('/')
def index():return 'this is index'print(app.url_map)@app.route('/test',methods=['GET'],endpoint='tests',defaults={'id':3})
def get_case(id):print('11')print(f'hello{id}')return redirect('/')print(app.url_map)if __name__ == '__main__':app.run(debug=True)

六、视图函数的分离(非常重要)

举个简单例子
在这里插入图片描述
route_variable.py

from flask import Flask, redirect# from route_one.urls import *
# 循环导入的解决方案
# 想用的时候再导入app = Flask(__name__)# url应该是导入所有的代码,而不是某一个模块
from route_one.urls import *if __name__ == '__main__':app.run(debug=True)

urls.py

from route_one import views
from route_one.route_variable import appapp.add_url_rule('/',view_func=views.index)
app.add_url_rule('/cases',view_func=views.cases)

views.py

def index():return 'this is index'def cases():return 'this is cases'

注意:

  1. 循环导入的解决方案
    想用的时候再导入
  2. url应该是导入所有的代码,而不是某一个模块

https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注!
欢迎关注微信公众号:宝藏女孩的成长日记
让这个可爱的宝藏女孩在努力的道路上与你一起同行!
如有转载,请注明出处(如不注明,盗者必究)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/568696.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SyntaxError: Non-UTF-8 code starting with ‘\xe2‘ 今天是小白上线的一天

打代码的时候第一行的utf-8注释居然空了个格 # coding utf-8估计是甜甜的恋爱想傻了&#xff0c;我居然还去查自己错哪里了&#xff0c;还说我的编码是对的鸭 正确输入&#xff1a; # codingutf-8

【Python爬虫】Python3+selenium环境配置

在我们爬虫爬网过程中&#xff0c;我们需要用到Python3selenium&#xff0c;Selenium是一个自动化测试工具&#xff0c;利用它我们可以驱动浏览器执行特定的动作&#xff0c;如点击、下拉等操作。对于一些JavaScript渲染的页面来说&#xff0c;这种抓取方式非常有效。 文章参考…

numpy 数组与矩阵的乘法理解

1. 当为array的时候&#xff0c;默认d*f就是对应元素的乘积&#xff0c;multiply也是对应元素的乘积&#xff0c;dot&#xff08;d,f&#xff09;会转化为矩阵的乘积&#xff0c; dot点乘意味着相加&#xff0c;而multiply只是对应元素相乘&#xff0c;不相加 2. 当为mat的时候…

(AU/PS)Adobe Audition CC.exe -系统错误 由于找不到MSVCP120.dll,无法继续执行代码。重新安装程序可能会解决此问题。

bug简直难过报错情况&#xff1a;由于找不到MSVCP120.dll&#xff0c;无法继续执行代码。重新安装程序可能会解决此问题。最终解决办法心得体会https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注&#xff01; 欢迎关注微信公众号&#xff1a;宝藏女孩的成长日记 让这…

【数据库】Window环境安装MySQL Server 5.7.21

正常我们在mysql官网下载安装的MySQL比较大&#xff0c;因为它集成了好多东西&#xff0c;尽管方便&#xff0c;但是东西比较多&#xff0c;有些我们可能不想要&#xff0c;这时我们可以直接下载单个MySQL Server安装&#xff0c;所以这篇文章主要介绍的就是在window环境下安装…

产品经理:论项目计划有多重要?——软件项目管理

凡事预则立&#xff0c;不预则废前言一、论安迪特质与项目经理的共通性二、个人感想三、我的产品经理实习笔试前言 昨天杨老师上了一让我记忆很深刻的课&#xff0c;就是项目计划的重要性&#xff0c;以《肖申克的救赎 》为例: 《肖申克的救赎 》的背景是20世纪30年代&#xff…

Android开发环境配置介绍

在我们进行AppiumAndroid进行自动化测试时&#xff0c;我们需要安装android_sdk环境&#xff0c;安装过程发现Android SDK&#xff0c;Android studio&#xff0c;AVD Manager&#xff0c;SDK Manager等名词&#xff0c;本篇文章主要介绍的就是Android开发环境的搭建&#xff0…

python——百钱买百鸡:一只公鸡5块钱,一只母鸡3块钱,三只小鸡1块钱,现在要用一百块钱买一百只鸡,问公鸡、母鸡、小鸡各多少只?

学习《python程序设计教程》的时候&#xff0c;遇到了这个问题&#xff0c;觉得还蛮好玩的&#xff1a; 百钱买百鸡&#xff1a;一只公鸡5块钱&#xff0c;一只母鸡3块钱&#xff0c;三只小鸡1块钱&#xff0c;现在要用一百块钱买一百只鸡&#xff0c;问公鸡、母鸡、小鸡各多少…

以知乎为例子来说明MVC是个啥

记得当时了解Web开发的MVC&#xff08;Model-View-Controller&#xff09;模式后&#xff0c;有一种心血喷涌的感觉&#xff0c;觉得太有意思了&#xff08;程序员别喷&#xff0c;我就是这么没见过世面&#xff09;。我们以知乎为例子来说明MVC是个啥&#xff1a;每个人的主页…

C/S架构网络聊天软件——Java Chat Application 用java做一个聊天机器人

Fighting!一、C/S概念1.1 什么是C/S1.2 C/S与B/S的区别二、主页面三、介绍四、特征五、jServer六、jMessenger七、使用代码7.1 导入项目后报错情况7.2 解决办法一、C/S概念 1.1 什么是C/S C/S分布式模式&#xff0c;是计算机用语。C是指Client&#xff0c;S是指Server&#xf…

【文章】浅相遇,薄相知,淡相守,终难忘

浅相遇 人生犹如一场戏&#xff0c;在每一个转折点&#xff0c;总有意想不到的邂逅。 有的相遇成歌&#xff0c;注定了在这绻绻红尘中&#xff0c;相携而去。有的转身为念&#xff0c;注定了行色匆匆&#xff0c;独自而行。 其实&#xff0c;上苍是公平的。在为我们关上一扇…

学习python 正则表达式——与你同行!

正则表达式定义 又称为规则表达式&#xff0c;是一个特殊的字符序列&#xff0c;利用事先定义好的一些特定字符以及它们的组合组成一个‘规则’&#xff0c;检查一个字符串是否与这种规则匹配来实现对字符的检索、过滤、匹配、替换。正则表达式需要用到re模块&#xff0c;该模块…

python 编译procto错误处理

运行&#xff1a;python -m grpc_tools.protoc --proto_path. --python_out. --grpc_python_out. helloworld.proto 出现如下错误&#xff1a; helloworld.proto: No such file or directory 解决方案&#xff1a; 解决方法一&#xff1a; cd 到helloworld.proto 的根目录 …

【Python】function、module、Package及import导入方法

计算机程序开发中&#xff0c;随着程序代码越写越多&#xff0c;在一个文件里代码就会越来越长&#xff0c;越来越不容易维护。 为了编写可维护的代码&#xff0c;我们把很多函数分组&#xff0c;分别放到不同的文件里面&#xff0c;这样&#xff0c;这个文件包含的代码就相对…

学习《数据结构》要爬的第一步梯子

小王开始专业课的复习一、数据结构是什么二、数据结构中基本概念和术语2.1数据结构的概念2.2按照不同功能划分逻辑结构2.3存储结构中重点顺序存储举例链式存储举例三、抽象数据类型的表示与实现3.1数据类型3.2抽象数据类型 &#xff08;ADTs: AbstractData Types&#xff09;3.…

python gRPC测试helloworld

一、测试helloworld 1、在https://github.com/grpc/grpc 下载example 2、用cmd打开命令行&#xff0c;cd到helloworld的根目录 cd E:\pythoncode\gRPC\grpc-master\grpc-master\examples\python\helloworld 然后运行 python greeter_server.py 3、再用cmd打开另一个命令行…

k52zip shell band 流氓软件总是显示~

小王的烦恼问题Garbage解决办法解决一解决二解决三总结问题 &#xff08;我都不知道这流氓软件哪里来的&#xff0c;平时也就下点学习资料啥的&#xff09; 一打开电脑学习给我整蒙了下方工具栏左右两边平白无故整两条杠出来 电脑下方工具栏处右击——》点击工具栏——》取消勾…

Microsoft Visual Studio 无法启动程序“路径啪啦啪啦“. 系统找不到指定的文件。

遇到这个低级错误 点击出现 解决办法 我看了好久&#xff0c;心态都崩了&#xff0c;结果是我两个cpp文件都有main函数&#xff0c;注释掉一个main函数就行了。这种错误可不要再犯了&#xff0c;搞心态。

【Python】Windows下Python3虚拟环境搭建

我们知道python中&#xff0c;有些第三方库的包会有依赖关系&#xff0c;比如某天你想搭建django环境&#xff0c;它可能依赖某个package 2.0&#xff0c;然后过几天你又想要搭建其他环境&#xff0c;这时候可能它也需要同样的包&#xff0c;但是这个包的版本可能不需要那么高&…

pycharm+pyqt5配置

1、打开cmd输入pip3 install PyQt5 2、输入pip3 install PyQt5-tools -i https://pypi.doubanio.com/simple 3、打开pycharm。新建项目点击Setting--》Tools--> (1)添加Qtdesigner &#xff08;2&#xff09;添加PyUIC 4、点击 5、打开Qtdesigner。新建一个ui文件。保存在…