首页
关于
留言
推荐
在线音乐
音乐搜索
VIP视频解析
Search
1
阿蓝 麦序机器人介绍
519 阅读
2
鲸鱼配音配置教程
140 阅读
3
小陪伴配置教程
122 阅读
4
PP约玩助手教程
99 阅读
5
全网助手介绍
35 阅读
Come on!
网站搭建
技术分享
代码填坑
学习
三支一扶
django开发
树莓派
QQ机器人
ad18
stm32
宠物医疗运营
python-flask学习
python面试
SpringBoot
工具箱
默认分类
Ubuntu
Arduino
机器学习
登录
Search
标签搜索
Linux
typecho插件
QQ机器人
Mirai
机器人
搭建
python
go-cqhttp
python报错
flask
开始肝
梯子
vpn
翻墙
搭建教程
三支一扶
bot
环境搭建
建站
测速
Raspberry Pi
累计撰写
131
篇文章
累计收到
7
条评论
首页
栏目
Come on!
网站搭建
技术分享
代码填坑
学习
三支一扶
django开发
树莓派
QQ机器人
ad18
stm32
宠物医疗运营
python-flask学习
python面试
SpringBoot
工具箱
默认分类
Ubuntu
Arduino
机器学习
页面
关于
留言
推荐
在线音乐
音乐搜索
VIP视频解析
搜索到
7
篇与
python-flask学习
的结果
2021-09-06
5.4-5.5 with详细用法
背景with用法,算是基础语法了把 但这个语法可不简单with使用我们使用with一般都是在如文件读写,数据库连接关闭等,有开有闭的情况下的,那么详细的with怎么用呢?with后面一般跟一个对象,而这个对象要实现__enter__`__exit__两个方法,即开关,其中__enter__`返回的数据会赋值给 as 后面__exit__一般是相当于finally的存在,但是也肩负着捕获异常的责任,可以传入四个值,当有错时,四个值就会携带报错信息,返回值一般是布尔值,返回False说明不处理异常,在外部我们要catch一下
2021年09月06日
0 阅读
0 评论
0 点赞
2021-09-06
5.1-5.3 Flask上下文的理解
背景Flask上下文一直以来就比较晦涩难懂,确实,我这是第三遍听了,刚开始听的时候还是有点懵,不过好在,整体听完也算理解了什么是Flask上下文先从我个人的理解说下,其实,上下文,上下文说的高大上,通俗的语言就是 封装过核心App的对象,在核心对象的基础上延申了一些其它的方法,俗称就是上下文问题发生在测试代码的时候,我们经常会发现LocalProxy的报错,原因就是没有上下文对象看图,一个请求进来,首先 current_app会读取_app_ctx_stack栈的栈顶,如果为空就会报错,同理,如果request(LocalProxy)在读取_request_ctx_stack栈的栈顶的时候为空,也会报错这时候,我们就推入AppContextapp核心对象的上下文对象到_app_ctx_stack栈中,同时,推入RequestContext请求上下文对象到request(LocalProxy)栈顶,就不会出现LocalProxy为空错误# 获取核心文件的上下文对象 ctx = app.app_context() # 推入到栈中 ctx.push() # 就可以获取核心对象 a = current_app() # 完了之后,得释放 ctx.pop()
2021年09月06日
0 阅读
0 评论
0 点赞
2021-09-06
4.5-4.6 flask总结 wtforms使用和配置文件拆分使用
背景wtforms是python中应该比较常用的校验包,使用简单,操作方便,易扩展性强,所以,学习这个校验工具还是很有必要的下载pipenv install wtforms==2.2为什么要加上版本号呢?因为这是一个坑,如果直接下载最新版本的2.3以上的会出现import 语法错误,查看堆栈信息可以看到里面有个判断import异常没有捕获到,不知道是依赖包的问题还是python没更新的问题,目前最新的python版本已经3.9了使用wtforms学会一点规则就可以了,先写一个校验类 from wtforms import Form, StringField, IntegerField from wtforms.validators import Length, NumberRange class SearchForms(Form): q = StringField(validators=[Length(min=1, max=30)]) page = IntegerField(validators=[NumberRange(min=1, max=99)], default=1)然后,直接导入类,传入字典形式的参数@web.route("/test_wtforms") def hello1(): v = SearchForms(request.args) if v.validate(): # 获取校验后的值,因为可能validate会赋默认值 q = v.q.data.strip() page = v.page.data headers = { 'content-type': 'text/plain' } response = make_response('<h1>q:{}, page: {}</h1>'.format(q, page), 201) response.headers = headers return response else: return "error"flask中的request和responserequest是flask路由中自带的请求对象,每个路由自带,里面有许多关于请求的数据,包块参数,请求方式,请求路径等response是返回对象,一般来说我们返回的都是response对象,只不过我们没有特意去封装,flask返回的时候会自己检测,如果不是response对象会自动封装,但是如果我们要定制的话,也是可以的比如直接封装headers = { 'content-type': 'text/plain' } response = make_response('<h1>q:{}, page: {}</h1>'.format(q, page), 201) response.headers = headers return response简单封装headers = { 'content-type': 'application/json', # 'location': 'https://baidu.com' } return '<h1>hello1</h1>', 200, headers
2021年09月06日
0 阅读
0 评论
0 点赞
2021-09-06
4.1-4.3 flask学习总结
背景蓝图的学习,确实是flask中比较难理解的部分,不过对于我来说,前前后后已经学习了三遍了,每次都有新的认识,这一次我确实有了新的感悟Flask-蓝图蓝图,用我的理解就是,一个Flask核心对象的副本,即Flask核心对象只能有一个,但是蓝图即副本可以有多个,其功能与核心对象无异,可以注册路由等操作蓝图示例from flask import Blueprint # 第一个参数是蓝图名称,第二个参数,填当前模块就好,一般都是__name__ web = Blueprint('web', __name__) # 加载book模块 from app.web import book蓝图的意义避免路由全部注册到核心对象上,分层设计模块化处理,便于开发和维护,简单易懂等注意七月老师文件层级的技巧如果只能出现一个Flask核心对象,我们就把它放在app的__init__.py文件中from flask import Flask # 注册唯一的一个Flask核心对象 def create_app(): app = Flask(__name__) # 导入配置文件到核心对象中 app.config.from_object('app.secure') app.config.from_object('app.settings') # 调用函数注册蓝图 register_blueprint(app) return app def register_blueprint(app): # 注意这里是用函数内部导入蓝图的方式 from app.web.book import web # 核心对象中专门有个方法来注册蓝图register_blueprint app.register_blueprint(web)总结蓝图就是克隆的一个子核心对象,直接Blueprint生成,就可以当成核心对象用,但是最终还是要注册到真实的核心对象上的
2021年09月06日
0 阅读
0 评论
0 点赞
2021-09-04
2.8-2.9章节学习 配置文件config&__name__ == __main__问题
背景flask中配置文件的加载__name__ == __main__ 如何理解flask配置文件两种方式一、直接引入变量的方式from config import DEBUG直接使用二、 app加载的方式app.config.from_object('config')之后在字典中使用app.run(host='0.0.0.0', debug=app.config['DEBUG'], port=81)注意 config必须在fisher同目录下里面的配置项必须大写,否则识别不到,一一对应为什么习惯性的加上if __name__ == __main__?因为在开发环境下,开发的时候我们都是直接启动flask自带的服务器进行代码测试,但是如果发布到线上环境,一般我们采用ngnix+uwgi的方式加载flask的核心文件,为了避免启动flask自带的服务器,所做的一个限制。
2021年09月04日
0 阅读
0 评论
0 点赞
1
2
0:00