flask
文章平均质量分 75
zfl273
再骄傲的人都会败给时间
展开
-
flask基础一
Flask简介Web应用程序的本质Web(World Wide Web)诞生最初的目的,是为了利用互联网交流工作文档。Web框架什么是Web框架?协助开发者快速开发 Web 应用程序的一套功能代码开发者只需要按照框架约定要求,在指定位置写上自己的业务逻辑代码例如:在某个区需要成立一家医院,有两种方式:圈地,打地基,盖楼,装修,入驻买楼,装修,入驻为什么要用Web框架?web网站发展至今,特别是服务...原创 2018-07-12 13:30:57 · 722 阅读 · 0 评论 -
flask模板中特有的变量和函数
模板中特有的变量和函数你可以在自己的模板中访问一些 Flask 默认内置的函数和对象config你可以从模板中直接访问Flask当前的config对象:{{config.SQLALCHEMY_DATABASE_URI}}sqlite:///database.dbrequest就是flask中代表当前请求的request对象:{{request.url}}http://127.0.0.1se...原创 2018-07-14 10:50:26 · 438 阅读 · 0 评论 -
flask基础十四之wtf表单
Web表单Web 表单是 Web 应用程序的基本功能。它是HTML页面中负责数据采集的部件。表单有三个部分组成:表单标签、表单域、表单按钮。表单允许用户输入数据,负责HTML页面数据采集,通过表单将用户输入的数据提交给服务器。在Flask中,为了处理web表单,我们可以使用 Flask-WTF 扩展,它封装了 WTForms,并且它有验证表单数据的功能WTForms支持的HTML标准字段字段对象说...原创 2018-07-14 10:52:26 · 1170 阅读 · 0 评论 -
flask基础十五之CSRF跨站请求伪造
CSRFCSRF全拼为Cross Site Request Forgery,译为跨站请求伪造。CSRF指攻击者盗用了你的身份,以你的名义发送恶意请求。包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的问题:个人隐私泄露以及财产安全。CSRF攻击示意图客户端访问服务器时没有同服务器做安全验证防止 CSRF 攻击步骤在客户端向后端请求界面数据的时候,后端会往响...原创 2018-07-14 10:55:48 · 1163 阅读 · 1 评论 -
flask数据库之ORM
ORMORM 全拼Object-Relation Mapping.中文意为 对象-关系映射.主要实现模型对象到关系数据库数据的映射.比如:把数据库表中每条记录映射为一个模型对象ORM图解优点 :只需要面向对象编程, 不需要面向数据库编写代码.对数据库的操作都转化成对类属性和方法的操作.不用编写各种数据库的sql语句.实现了数据模型与数据库的解耦, 屏蔽了不同数据库操作上的差异.不在关注用的是mys...原创 2018-07-14 10:59:09 · 967 阅读 · 0 评论 -
flask数据库之Flask-SQLAlchemy安装及配置
Flask-SQLAlchemy安装及设置SQLALchemy 实际上是对数据库的抽象,让开发者不用直接和 SQL 语句打交道,而是通过 Python 对象来操作数据库,在舍弃一些性能开销的同时,换来的是开发效率的较大提升SQLAlchemy是一个关系型数据库框架,它提供了高层的 ORM 和底层的原生数据库的操作。flask-sqlalchemy 是一个简化了 SQLAlchemy 操作的flas...原创 2018-07-14 11:01:11 · 8023 阅读 · 0 评论 -
flask数据库之基本操作模型建立
数据库基本操作在Flask-SQLAlchemy中,插入、修改、删除操作,均由数据库会话管理。会话用 db.session 表示。在准备把数据写入数据库前,要先将数据添加到会话中然后调用 commit() 方法提交会话。在 Flask-SQLAlchemy 中,查询操作是通过 query 对象操作数据。最基本的查询是返回表中所有数据,可以通过过滤器进行更精确的数据库查询。在视图函数中定义模型类fr...原创 2018-07-14 11:04:32 · 2830 阅读 · 2 评论 -
flask数据库之多对多模型演练
多对多演练在项目开发过程中,会遇到很多数据之间多对多关系的情况,比如:学生网上选课(学生和课程)老师与其授课的班级(老师和班级)用户与其收藏的新闻(用户和新闻)等等...所以在开发过程中需要使用 ORM 模型将表与表的多对多关联关系使用代码描述出来。多对多关系描述有一个唯一的点就是:需要添加一张单独的表去记录两张表之间的对应关系场景示例需求分析学生可以网上选课,学生有多个,课程也有多个学生有:张三...原创 2018-07-14 11:08:14 · 609 阅读 · 0 评论 -
flask数据库之数据库迁移
数据库迁移在开发过程中,需要修改数据库模型,而且还要在修改之后更新数据库。最直接的方式就是删除旧表,但这样会丢失数据。更好的解决办法是使用数据库迁移框架,它可以追踪数据库模式的变化,然后把变动应用到数据库中。在Flask中可以使用Flask-Migrate扩展,来实现数据迁移。并且集成到Flask-Script中,所有操作通过命令就能完成。为了导出数据库迁移命令,Flask-Migrate提供了一...原创 2018-07-14 11:10:11 · 1487 阅读 · 1 评论 -
flask蓝图
Blueprint模块化随着flask程序越来越复杂,我们需要对程序进行模块化的处理,之前学习过python的模块化管理,于是针对一个简单的flask程序进行模块化处理举例来说:我们有一个博客程序,前台界面需要的路由为:首页,列表,详情等页面源程序app.py文件:from flask import Flaskapp=Flask(__name__)@app.route('/')def ...原创 2018-07-14 11:11:15 · 281 阅读 · 0 评论 -
flask模版之十三之模版复用 宏 继承 包含
模板代码复用在模板中,可能会遇到以下情况:多个模板具有完全相同的顶部和底部内容多个模板中具有相同的模板代码内容,但是内容中部分值不一样多个模板中具有完全相同的 html 代码块内容像遇到这种情况,可以使用 JinJa2 模板中的 宏、继承、包含来进行实现宏对宏(macro)的理解:把它看作 Jinja2 中的一个函数,它会返回一个模板或者 HTML 字符串为了避免反复地编写同样的模板代码,出现代码...原创 2018-07-13 11:39:54 · 471 阅读 · 0 评论 -
flask基础之十二控制语句
控制代码块控制代码块主要包含两个:- if/else if /else / endif- for / endforif语句Jinja2 语法中的if语句跟 Python 中的 if 语句相似,后面的布尔值或返回布尔值的表达式将决定代码中的哪个流程会被执行:{%if user.is_logged_in() %} <a href='/logout'>Logout</a&g...原创 2018-07-13 11:36:29 · 1979 阅读 · 0 评论 -
flask基础十一之过滤器
过滤器过滤器的本质就是函数。有时候我们不仅仅只是需要输出变量的值,我们还需要修改变量的显示,甚至格式化、运算等等,而在模板中是不能直接调用 Python 中的某些方法,那么这就用到了过滤器。使用方式:过滤器的使用方式为:变量名 | 过滤器。{{variable | filter_name(*args)}}如果没有任何参数传给过滤器,则可以把括号省略掉{{variable | filter_nam...原创 2018-07-13 11:33:58 · 464 阅读 · 0 评论 -
flask基础二参数配置
相关配置参数在上一节实现了一个最简单的 Flask 应用程序,只使用了7行代码,接来对 Flask 程序的创建,运行配置做进一步的了解,具体有:Flask 程序初始化参数Flask 程序相关配置加载方式app.run() 参数初始化参数Flask 程序实例在创建的时候,需要默认传入当前 Flask 程序所指定的包(模块),接下来就来详细查看一下 Flask 应用程序在创建的时候一些需要我们关注的参...原创 2018-07-12 13:36:47 · 954 阅读 · 0 评论 -
flask基础三之路由定义
路由基本定义明确路由定义的参数,请求方式指定PostMan 的使用指定路由地址# 指定访问路径为 demo1@app.route('/demo1')def demo1(): return 'demo1'给路由传参示例有时我们需要将同一类 URL 映射到同一个视图函数处理,比如:使用同一个视图函数来显示不同用户的个人信息。# 路由传递参数@app.route('/user/<u...原创 2018-07-12 13:41:05 · 701 阅读 · 0 评论 -
flask基础四之视图逻辑和正则匹配规则
视图常用逻辑返回 JSON重定向url_for自定义状态码返回JSON在使用 Flask 写一个接口时候需要给客户端返回 JSON 数据,在 Flask 中可以直接使用 jsonify 生成一个 JSON 的响应# 返回JSON@app.route('/demo4')def demo4(): json_dict = { "user_id": 10, "u...原创 2018-07-13 10:50:00 · 279 阅读 · 0 评论 -
flask基础五之异常捕获和请求勾子
异常捕获HTTP 异常主动抛出abort 方法抛出一个给定状态代码的 HTTPException 或者 指定响应,例如想要用一个页面未找到异常来终止请求,你可以调用 abort(404)。参数:code – HTTP的错误状态码# abort(404)abort(500)抛出状态码的话,只能抛出 HTTP 协议的错误状态码捕获错误errorhandler 装饰器注册一个错误处理程序,当程序抛出...原创 2018-07-13 10:52:20 · 2092 阅读 · 0 评论 -
flask基础六之请求参数
装饰器路由具体实现梳理Flask有两大核心:Werkzeug和Jinja2- Werkzeug实现路由、调试和Web服务器网关接口- Jinja2实现了模板。Werkzeug是一个遵循WSGI协议的python函数库- 其内部实现了很多Web框架底层的东西,比如request和response对象;- 与WSGI规范的兼容;支持Unicode;- 支持基本的会话管理和签名Cookie;-...原创 2018-07-13 10:55:23 · 836 阅读 · 0 评论 -
flask基础七之状态保持cookie和session
状态保持因为 http 是一种无状态协议,浏览器请求服务器是无状态的。无状态:指一次用户请求时,浏览器、服务器无法知道之前这个用户做过什么,每次请求都是一次新的请求。无状态原因:浏览器与服务器是使用 socket 套接字进行通信的,服务器将请求结果返回给浏览器之后,会关闭当前的 socket 连接,而且服务器也会在处理页面完毕之后销毁页面对象。有时需要保持下来用户浏览的状态,比如用户是否登录过,浏...原创 2018-07-13 11:01:40 · 937 阅读 · 0 评论 -
flask基础八之请求上下文和应用上下文
上下文上下文:相当于一个容器,保存了 Flask 程序运行过程中的一些信息。Flask中有两种上下文,请求上下文和应用上下文请求上下文(request context)思考:在视图函数中,如何取到当前请求的相关数据?比如:请求地址,请求方式,cookie等等在 flask 中,可以直接在视图函数中使用 request 这个对象进行获取相关数据,而 request 就是请求上下文的对象,保存了当前本...原创 2018-07-13 11:05:02 · 406 阅读 · 0 评论 -
flask基础九之script扩展
Flask-Script 扩展通过使用Flask-Script扩展,我们可以在Flask服务器启动的时候,通过命令行的方式传入参数。而不仅仅通过app.run()方法中传参,比如我们可以通过:python hello.py runserver -host ip地址以上代码告诉服务器在哪个网络接口监听来自客户端的连接。默认情况下,服务器只监听来自服务器所在的计算机发起的连接,即localhost连...原创 2018-07-13 11:24:58 · 769 阅读 · 0 评论 -
flask基础十之模版使用介绍
inja2模板引擎简介模板在前面的示例中,视图函数的主要作用是生成请求的响应,这是最简单的请求。实际上,视图函数有两个作用:处理业务逻辑和返回响应内容。在大型应用中,把业务逻辑和表现内容放在一起,会增加代码的复杂度和维护成本。本节学到的模板,它的作用即是承担视图函数的另一个作用,即返回响应内容。模板其实是一个包含响应文本的文件,其中用占位符(变量)表示动态部分,告诉模板引擎其具体的值需要从使用的数...原创 2018-07-13 11:31:59 · 1230 阅读 · 0 评论 -
flask之单元测试
单元测试为什么要测试?Web程序开发过程一般包括以下几个阶段:[需求分析,设计阶段,实现阶段,测试阶段]。其中测试阶段通过人工或自动来运行测试某个系统的功能。目的是检验其是否满足需求,并得出特定的结果,以达到弄清楚预期结果和实际结果之间的差别的最终目的。测试的分类:测试从软件开发过程可以分为:单元测试对单独的代码块(例如函数)分别进行测试,以保证它们的正确性集成测试对大量的程序单元的协同工作情况做...原创 2018-07-14 11:13:22 · 7076 阅读 · 0 评论