python_flask学习笔记
还算小萌新?
加油
展开
-
Flask学习笔记(十八)单元测试
单元测试 为什么要测试? Web程序开发过程一般包括以下几个阶段:[需求分析,设计阶段,实现阶段,测试阶段]。其中测试阶段通过人工或自动来运行测试某个系统的功能。目的是检验其是否满足需求,并得出特定的结果,以达到弄清楚预期结果和实际结果之间的差别的最终目的。 测试的分类: 测试从软件开发过程可以分为:单元测试、集成测试、系统测试等。在众多的测试中,与程序开发人员最密切的就是单元测试,因为单元测试是由开发人员进行的,而其他测试都由专业的测试人员来完成。所以我们主要学习单元测试。 什么是单元测试? 程序开发过程原创 2020-07-24 12:29:10 · 148 阅读 · 0 评论 -
Flask学习笔记(十七)蓝图Blueprint
蓝图Blueprint 为什么学习蓝图? 我们学习Flask框架,是从写单个文件,执行hello world开始的。我们在这单个文件中可以定义路由、视图函数、定义模型等等。但这显然存在一个问题:随着业务代码的增加,将所有代码都放在单个程序文件中,是非常不合适的。这不仅会让代码阅读变得困难,而且会给后期维护带来麻烦。 如下示例:我们在一个文件中写入多个路由,这会使代码维护变得困难。 from flask import Flask app = Flask(__name__) @app.route原创 2020-07-24 12:27:38 · 1504 阅读 · 0 评论 -
Flask学习笔记(十六)Flask—Mail
Flask—Mail 在开发过程中,很多应用程序都需要通过邮件提醒用户,Flask的扩展包Flask-Mail通过包装了Python内置的smtplib包,可以用在Flask程序中发送邮件。 Flask-Mail连接到简单邮件协议(Simple Mail Transfer Protocol,SMTP)服务器,并把邮件交给服务器发送。 邮箱认证 如下示例,通过开启QQ邮箱SMTP服务设置,发送邮件。 from flask import Flask from flask_mail import Mail, M原创 2020-07-24 12:25:26 · 154 阅读 · 0 评论 -
Flask学习笔记(十五)数据库迁移
数据库迁移 在开发过程中,需要修改数据库模型,而且还要在修改之后更新数据库。最直接的方式就是删除旧表,但这样会丢失数据。 更好的解决办法是使用数据库迁移框架,它可以追踪数据库模式的变化,然后把变动应用到数据库中。 在Flask中可以使用Flask-Migrate扩展,来实现数据迁移。并且集成到Flask-Script中,所有操作通过命令就能完成。 为了导出数据库迁移命令,Flask-Migrate提供了一个MigrateCommand类,可以附加到flask-script的manager对象上。 首先要在虚原创 2020-07-24 12:24:35 · 186 阅读 · 0 评论 -
Flask学习笔记(十四)自定义模型类
自定义模型类 定义模型 模型表示程序使用的数据实体,在Flask-SQLAlchemy中,模型一般是Python类,继承自db.Model,db是SQLAlchemy类的实例,代表程序使用的数据库。 类中的属性对应数据库表中的列。id为主键,是由Flask-SQLAlchemy管理。db.Column类构造函数的第一个参数是数据库列和模型属性类型。 如下示例:定义了两个模型类,作者和书名。 #coding=utf-8 from flask import Flask,render_template,redir原创 2020-07-24 11:57:27 · 382 阅读 · 0 评论 -
Flask学习笔记(十三)数据库基本操作
数据库基本操作 在Flask-SQLAlchemy中,插入、修改、删除操作,均由数据库会话管理。会话用db.session表示。在准备把数据写入数据库前,要先将数据添加到会话中然后调用commit()方法提交会话。 数据库会话是为了保证数据的一致性,避免因部分更新导致数据不一致。提交操作把会话对象全部写入数据库,如果写入过程发生错误,整个会话都会失效。 数据库会话也可以回滚,通过db.session.rollback()方法,实现会话提交数据前的状态。 在Flask-SQLAlchemy中,查询操作是通过q原创 2020-07-24 11:55:48 · 793 阅读 · 0 评论 -
Flask学习笔记(十二)数据库的设置
数据库的设置 Web应用中普遍使用的是关系模型的数据库,关系型数据库把所有的数据都存储在表中,表用来给应用的实体建模,表的列数是固定的,行数是可变的。它使用结构化的查询语言。关系型数据库的列定义了表中表示的实体的数据属性。比如:商品表里有name、price、number等。 Flask本身不限定数据库的选择,你可以选择SQL或NOSQL的任何一种。也可以选择更方便的SQLALchemy,类似于Django的ORM。SQLALchemy实际上是对数据库的抽象,让开发者不用直接和SQL语句打交道,而是通过Py原创 2020-07-24 11:52:47 · 132 阅读 · 0 评论 -
Flask学习笔记(十一)Flask中的特殊变量和方法:
在Flask中,有一些特殊的变量和方法是可以在模板文件中直接访问的。 config 对象: config 对象就是Flask的config对象,也就是 app.config 对象。 {{ config.SQLALCHEMY_DATABASE_URI }} request 对象: 就是 Flask 中表示当前请求的 request 对象,request对象中保存了一次HTTP请求的一切信息。 request常用的属性如下: 属性 说明 类型 data 记录请求的数据,并转换为字符串 * form 记录请求中的原创 2020-07-24 11:52:12 · 307 阅读 · 0 评论 -
Flask学习笔记(十)宏、继承、包含
宏、继承、包含 类似于python中的函数,宏的作用就是在模板中重复利用代码,避免代码冗余。 Jinja2支持宏,还可以导入宏,需要在多处重复使用的模板代码片段可以写入单独的文件,再包含在所有模板中,以避免重复。 定义宏 {% macro input() %} {% endmacro %} 调用宏 {{ input() }} 定义带参数的宏 {% macro input(name,value=’’,type=‘text’,size=20) %} {% endmacro %} 调用宏,并传递参数 {{ i原创 2020-07-24 11:51:15 · 116 阅读 · 0 评论 -
Flask学习笔记(九)控制语句
控制语句 常用的几种控制语句: 模板中的if控制语句 @app.route(’/user’) def user(): user = ‘dongGe’ return render_template(‘user.html’,user=user) {% if user %} hello {{user}} {% else %} welcome to flask {% endif %} hello world原创 2020-07-24 11:50:00 · 84 阅读 · 0 评论 -
Flask学习笔记(八)Web表单
Web表单: web表单是web应用程序的基本功能。 它是HTML页面中负责数据采集的部件。表单有三个部分组成:表单标签、表单域、表单按钮。表单允许用户输入数据,负责HTML页面数据采集,通过表单将用户输入的数据提交给服务器。 在Flask中,为了处理web表单,我们一般使用Flask-WTF扩展,它封装了WTForms,并且它有验证表单数据的功能。 WTForms支持的HTML标准字段 字段对象 说明 StringField 文本字段 TextAreaField 多行文本字段 PasswordField原创 2020-07-24 11:47:29 · 213 阅读 · 0 评论 -
Flask学习笔记(七)过滤器
在前面的示例中,视图函数的主要作用是生成请求的响应,这是最简单的请求。实际上,视图函数有两个作用:处理业务逻辑和返回响应内容。在大型应用中,把业务逻辑和表现内容放在一起,会增加代码的复杂度和维护成本。本节学到的模板,它的作用即是承担视图函数的另一个作用,即返回响应内容。 模板其实是一个包含响应文本的文件,其中用占位符(变量)表示动态部分,告诉模板引擎其具体值需要从使用的数据中获取。使用真实值替换变量,再返回最终得到的字符串,这个过程称为“渲染”。Flask使用Jinja2这个模板引擎来渲染模板。Jinja2原创 2020-07-24 11:43:25 · 123 阅读 · 0 评论 -
Flask学习笔记(六)模板(变量)
在前面的示例中,视图函数的主要作用是生成请求的响应,这是最简单的请求。实际上,视图函数有两个作用:处理业务逻辑和返回响应内容。在大型应用中,把业务逻辑和表现内容放在一起,会增加代码的复杂度和维护成本。本节学到的模板,它的作用即是承担视图函数的另一个作用,即返回响应内容。 模板其实是一个包含响应文本的文件,其中用占位符(变量)表示动态部分,告诉模板引擎其具体值需要从使用的数据中获取。使用真实值替换变量,再返回最终得到的字符串,这个过程称为“渲染”。Flask使用Jinja2这个模板引擎来渲染模板。Jinja2原创 2020-07-24 11:42:20 · 517 阅读 · 0 评论 -
Flask学习笔记(五)拓展
2.2 扩展 上下文:相当于一个容器,保存了Flask程序运行过程中的一些信息。 Flask中有两种上下文,请求上下文和应用上下文。 请求上下文(request context) request和session都属于请求上下文对象。 request:封装了HTTP请求的内容,针对的是http请求。举例:user = request.args.get(‘user’),获取的是get请求的参数。 session:用来记录请求会话中的信息,针对的是用户信息。举例:session[‘name’] = user.id原创 2020-07-24 11:40:16 · 136 阅读 · 0 评论 -
Flask学习笔记(四)从helloworld开始
Flask程序运行过程: 所有Flask程序必须有一个程序实例。 Flask调用视图函数后,会将视图函数的返回值作为响应的内容,返回给客户端。一般情况下,响应内容主要是字符串和状态码。 当客户端想要获取资源时,一般会通过浏览器发起HTTP请求。此时,Web服务器使用WSGI(Web Server Gateway Interface)协议,把来自客户端的所有请求都交给Flask程序实例。WSGI是为 Python 语言定义的Web服务器和Web应用程序之间的一种简单而通用的接口,它封装了接受HTTP请求、解析原创 2020-07-04 09:55:52 · 192 阅读 · 0 评论 -
Flask学习笔记(二)了解框架
1.1 了解框架: Flask作为Web框架,它的作用主要是为了开发Web应用程序。那么我们首先来了解下Web应用程序。Web应用程序 (World Wide Web)诞生最初的目的,是为了利用互联网交流工作文档。 HTTP请求过程 一切从客户端发起请求开始。 所有Flask程序都必须创建一个程序实例。 当客户端想要获取资源时,一般会通过浏览器发起HTTP请求。 此时,Web服务器使用一种名为WEB服务器网关接口的WSGI(Web Server Gateway Interface)协议,把来自客户端的请求都原创 2020-07-04 09:28:04 · 211 阅读 · 0 评论 -
Flask学习笔记(一) 引言
认识Flask 通过对比来了解Flask: Django: Python Web框架里比较有名当属Django,Django功能全面,它提供一站式解决方案,集成了MVT(Model-View-Template)和ORM,以及后台管理。但是缺点也很明显,它偏重。就像是一个装潢好的房子,它提供好了你要用的东西,直接拿来用就可以。 Flask: Flask相对于Django而言是轻量级的Web框架。和Django不同,Flask轻巧、简洁,通过定制第三方扩展来实现具体功能。 可定制性,通过扩展增加其功能,这是F原创 2020-07-04 09:25:54 · 121 阅读 · 0 评论