
flask
feiyy404
选择往往比努力更重要。
展开
-
在 Flask 推送上下文遇到的问题--请求上下文 应用上下文与环境变量
关键词请求上下文 应用上下文 环境变量相关参考https://blog.youkuaiyun.com/wangxin6722513/article/details/79447261关于 flask shell@app.shell_context_processordef make_shell_context(): # 将相关的模型添加到 shell 上下文 return {'db'...原创 2019-08-05 18:05:03 · 415 阅读 · 0 评论 -
Flask -- (18)Jinja2模板引擎
Jinja2模板引擎模板在前面的示例中,视图函数的主要作用是生成请求的响应,这是最简单的请求。实际上,视图函数有两个作用:处理业务逻辑和返回响应内容。在大型应用中,把业务逻辑和表现内容放在一起,会增加代码的复杂度和维护成本。本节学到的模板,它的作用即是承担视图函数的另一个作用,即返回响应内容。模板其实是一个包含响应文本的文件,其中用占位符(变量)表示动态部分,告诉模板引擎其具体的值需...原创 2018-08-28 19:42:03 · 331 阅读 · 0 评论 -
Flask --(15) Flask 和 Django 里面的 secret_key 设置有什么用
Flask 和 Django 里面的 secret_key 设置有什么用来源: https://segmentfault.com/q/1010000007295395问题:在 flask 与 Django 的文档中都发现需要配置 secret_key 1. 这种 secret_key 有什么用吗? 2. 如果暴露它会产生哪些安全风险?jtr109有用的.引用一段 Flas...原创 2018-08-28 18:54:52 · 3923 阅读 · 0 评论 -
Flask -- (14)状态保持
状态保持因为http是一种无状态协议,不会保持某一次请求所产生的信息,如果想实现状态保持,在开发中解决方式有:cookie:数据存储在客户端,节省服务器空间,但是不安全session:会话,数据存储在服务器端无状态协议1.协议对于事务处理没有记忆能力2.对同一个url请求没有上下文关系3.每次的请求都是独立的,它的执行情况和结果与前面的请求和之后的请求是无直接关系的,它...原创 2018-08-28 18:53:48 · 260 阅读 · 0 评论 -
Flask -- (13) 装饰器路由的实现
装饰器路由的实现Flask 有两大核心:Werkzeug和Jinja2Werkzeug实现路由、调试和Web服务器网关接口- Jinja2实现了模板。Werkzeug是一个遵循WSGI协议的python函数库其内部实现了很多Web框架底层的东西,比如request和response对象;与WSGI规范的兼容;支持Unicode;支持基本的会话管理和签名Cookie;...原创 2018-08-28 18:52:52 · 360 阅读 · 0 评论 -
Flask -- (12) 请求钩子
请求钩子在客户单和服务器的交互的过程中,有些准备工作或者扫尾工作需要处理。比如:在请求开始时,建立数据库连接;在请求结束时,指定数据的交互格式。为了让每个视图函数避免编写重复功能的代码, Flask 提供了通用设施的功能,即请求钩子。请求钩子是通过装饰器的形式实现, Flask 支持如下四种请求钩子:before_first_request:在处理第一个请求前运行。before_r...原创 2018-08-28 18:52:03 · 266 阅读 · 0 评论 -
Flask -- (11) flask 中的 request 对象
flask 中的 request 对象就是 falsk 中代表了当前请求的 request 对象常用的属性如下: 属性 说明 类型 data 记录请求的数据,并转化为字符串 * form 记录请求的表单数据 MultiDict args 记录请求中的查询参数 MultiDict cookies 记录请求中的 ...原创 2018-08-28 18:51:14 · 533 阅读 · 0 评论 -
Flask -- (10) 异常捕获与开启调试模式
异常捕获与开启调试模式abort 方法抛出一个给定状态代码的 HTTPException,例如想要用一个页面未找到异常来终止请求,你可以调用 abort(404)。参数: code – HTTP的错误状态码# abort(404)abort(500)注意只能抛出HTTP协议的状态码errorhandler 装饰器注册一个错误处理程序,当程序抛出指定错误状态码的时...原创 2018-08-28 18:50:16 · 561 阅读 · 0 评论 -
Flask -- (9)路由的各种定义方式
路由的各种定义方式请求方式限定使用 methods 参数指定可接受的请求方式,可以是多种@app.route('/',methods=['GET'])def hello(): return '<h1>hello world</h1>'路由查找方式同一个路由指向两个不同的函数,在匹配的过程中,自上而下依次匹配@app.route('/'...原创 2018-08-28 11:18:45 · 559 阅读 · 0 评论 -
Flask -- (7)从 Hello World 开始 -- Flask程序的运行过程
从 Hello World 开始 – Flask程序的运行过程所有Flask程序必须有一个程序实例。当客户端想要获取资源时,一般会通过浏览器发起HTTP请求。此时,Web服务器使用WSGI(Web Server Gateway Interface)协议,把来自客户端的所有请求都交给Flask程序实例,程序实例使用Werkzeug来做路由分发(URL请求和视图函数之间的对应关系)。根...原创 2018-08-28 10:42:32 · 751 阅读 · 0 评论 -
Flask --(23)Web 表单
Web 表单web表单是web应用程序的基本功能。它是HTML页面中负责数据采集的部件。表单有三个部分组成:表单标签、表单域、表单按钮。表单允许用户输入数据,负责HTML页面数据采集,通过表单将用户输入的数据提交给服务器。在Flask中,为了处理web表单,我们一般使用Flask-WTF扩展,它封装了WTForms,并且它有验证表单数据的功能。WTForms支持的HTML标准字段...原创 2018-09-20 18:42:28 · 224 阅读 · 0 评论 -
Flask --(24)数据库的基本知识以及在 Flask 中的使用概述
数据库的简单回顾SQL(Structured Query Language):结构化查询语言。表形式存储列数固定 ,行数可变定义数据,主键、外键,引用同表或不同表的主键,这种联系称为关系。NoSQL:非结构化查询语言。不遵循关系型数据库的统称为NoSQL数据库集合——关系型数据库的表文档——关系型数据库的行Flask 中使用的数据库Web应用中普遍使用的是关系模型的数据库...原创 2018-09-20 18:49:20 · 263 阅读 · 0 评论 -
优雅处理 flask 环境变量
参考http://docs.jinkan.org/docs/flask/quickstart.html#a-minimal-applicationhttps://github.com/luhuisicnu/The-Flask-Mega-Tutorial-zh/blob/master/docs/第一章:Hello%2C World!.md一般的运行方式最常见的是使用直接启动的方式,例如:f...转载 2019-07-26 14:48:10 · 2036 阅读 · 0 评论 -
Flask --(33)REST API 设计风格
2000年,Roy Thomas Fielding博士在他的博士论文《Architectural Styles and the Design of Network-based Software Architectures》中提出了几种软件应用的架构风格,REST作为其中的一种架构风格在这篇论文中进行了概括性的介绍。REST:Representational State Transfer的缩写,翻...转载 2019-08-06 14:22:08 · 399 阅读 · 0 评论 -
Flask --(32)利用uWSGI和nginx进行服务器部署
区分几个概念:WSGI:全称是Web Server Gateway Interface(web服务器网关接口)它是一种规范,它是web服务器和web应用程序之间的接口它的作用就像是桥梁,连接在web服务器和web应用框架之间没有官方的实现,更像一个协议。只要遵照这些协议,WSGI应用(Application)都可以在任何服务器(Server)上运行uwsgi:是一种传输协议,用于定义传...转载 2018-09-20 22:24:52 · 302 阅读 · 0 评论 -
Flask --(31)Flask 中的单元测试
为什么要测试?(记得某次面试,面试官一直问我这个问题 …)Web程序开发过程一般包括以下几个阶段:[需求分析,设计阶段,实现阶段,测试阶段]。其中测试阶段通过人工或自动来运行测试某个系统的功能。目的是检验其是否满足需求,并得出特定的结果,以达到弄清楚预期结果和实际结果之间的差别的最终目的。测试的分类测试从软件开发过程可以分为:单元测试对单独的代码块(例如函数)分别进行测试,以保证它...转载 2018-09-20 21:24:10 · 253 阅读 · 0 评论 -
Flask --(30)Flask 中邮件扩展的实现
邮件扩展在开发过程中,很多应用程序都需要通过邮件提醒用户,Flask的扩展包Flask-Mail通过包装了Python内置的smtplib包,可以用在Flask程序中发送邮件。Flask-Mail连接到简单邮件协议(Simple Mail Transfer Protocol,SMTP)服务器,并把邮件交给服务器发送。设置邮箱授权码如下示例,通过开启 QQ 邮箱验证 SMTP 服务设置,发...原创 2018-09-20 20:59:16 · 487 阅读 · 0 评论 -
Flask --(28)数据库操作案例
定义模型模型表示程序使用的数据实体,在Flask-SQLAlchemy中,模型一般是Python类,继承自db.Model,db是SQLAlchemy类的实例,代表程序使用的数据库。类中的属性对应数据库表中的列。id为主键,是由Flask-SQLAlchemy管理。db.Column类构造函数的第一个参数是数据库列和模型属性类型。注:如果没有在创建数据库的时候指定编码的话,向数据库中插入中文...转载 2018-09-20 20:43:05 · 638 阅读 · 0 评论 -
Flask --(27)数据库的基本操作
在Flask-SQLAlchemy中,插入、修改、删除操作,均由数据库会话管理。会话用db.session表示。在准备把数据写入数据库前,要先将数据添加到会话中然后调用 commit() 方法提交会话。在Flask-SQLAlchemy中,查询操作是通过query对象操作数据。最基本的查询是返回表中所有数据,可以通过过滤器进行更精确的数据库查询。在视图函数中定义模型类from f...原创 2018-09-20 20:11:02 · 441 阅读 · 0 评论 -
Flask --(26)常见的 SQLAlchemy 字段类型、列选项 、关系选项
常用的 SQLAlchemy 字段类型类型名python中类型说明Integerint普通整数,一般是32位SmallIntegerint取值范围小的整数,一般是16 位BigIntegerint 或 long不限制精度的整数Floatfloat浮点数Numericdecimal.Decimal普通整数,一般是32位Stri...原创 2018-09-20 19:38:54 · 1889 阅读 · 0 评论 -
Flask --(25)Flask 中数据库的配置
安装 flask-sqlalchemypip install flask-sqlalchemy如果连接的是 mysql 数据库,需要安装 mysqlpip install flask-mysqldb使用 Flask-sqlalchemy 管理数据库在Flask-SQLAlchemy中,数据库使用URL指定,而且程序使用的数据库必须保存到Flask配置对象的SQLALCHEMY_DAT...原创 2018-09-20 19:05:44 · 1196 阅读 · 0 评论 -
Flask -- (6)requirements 文件
requirements 文件Python 项目中必须包含一个 requirements.txt 文件,用于记录所有依赖包及其精确的版本号,以便在新环境中进行部署操作。在虚拟环境使用以下命令将当前虚拟环境中的依赖包以版本号生成至文件中:$ pip freeze >requirements.txt安装或升级包后,最好更新这个文件以保证虚拟环境中的依赖包。需求文件的内容示例...原创 2018-08-28 10:41:21 · 542 阅读 · 0 评论 -
Flask --(22)Flask特有的变量和函数
你可以在自己的模板中访问一些Flask默认内置的函数和对象config你可以从模板中直接访问Flask当前的config对象:{{config.SQLALCHEMY_DATABASE_URI}}sqlite:///database.dbrequest就是flask中代表当前请求的request对象:{{request.url}}http://127.0.0.1...原创 2018-08-30 22:42:48 · 624 阅读 · 0 评论 -
Flask --(29) 对 Flask 蓝图的理解
随着业务代码的增加,将所有代码都放在单个程序文件中,是非常不合适的。这不仅会让代码阅读变得困难,而且会给后期维护带来麻烦。 如下示例:我们在一个文件中写入多个路由,这会使代码维护变得困难。from flask import Flask app = Flask(__name__) @app.route('/') def index(): ...原创 2018-04-13 19:49:33 · 9762 阅读 · 7 评论 -
Flask Web开发--狗书笔记003--第三章 模板
一般而言,请求会改变程序的状态,而这种变化也会在视图函数中产生。举个栗子,当我们在网站中注册了一个新账户,用户在表单中输入电子邮箱和密码,然后点击提交按钮。 服务器接收到包含y用户输入数据的请求,然后Flask把请求分发到注册请求的视图函数。 这个视图函数需要访问数据库,添加新用户,然后生成相应回送浏览器。 这两个过程分别是业务逻辑和表现逻辑。表格中的数据由数据库中读取的数据以及必要...原创 2018-04-30 16:33:35 · 435 阅读 · 0 评论 -
Flask -- (21)flask中的宏,继承和包含
宏宏的作用宏的作用就是在模板中重复利用代码,避免代码冗余。无参数的宏的定义和使用{% macro input() %} &lt;input type="text" name = "username" value = "" size="30"/&原创 2018-04-11 17:23:19 · 563 阅读 · 0 评论 -
flask中web表单的实现
web表单是web应用程序的基本功能。它是HTML页面中负责数据采集的部件。表单有三个部分组成:表单标签、表单域、表单按钮。表单允许用户输入数据,负责HTML页面数据采集,通过表单将用户输入的数据提交给服务器。在Flask中,为了处理web表单,我们一般使用Flask-WTF扩展,它封装了WTForms,并且它有验证表单数据的功能。WTForms中支持的HTML标准字段 ...原创 2018-04-11 16:09:23 · 805 阅读 · 0 评论 -
Flask -- (19)flask模板过滤器总结
什么是过滤器过滤器的本质就是函数。有时候我们不仅仅只是需要输出变量的值,我们还需要修改变量的显示,甚至格式化、运算等等,这就用到了过滤器。 过滤器的使用方式为:变量名 | 过滤器。 过滤器名写在变量名后面,中间用 | 分隔。过滤器的使用safe :禁用转义{{ '&lt;em&gt;hello&lt;/em&gt;'|safe}} &lt;br&gt;capitalize:...原创 2018-04-11 13:09:54 · 966 阅读 · 0 评论 -
Flask -- (16)Flask中的上下文及实现原理
上下文:相当于一个容器,保存了Flask程序运行过程中的一些信息。 在计算机中,相对于进程而言,上下文就是进程执行时的环境。具体就是各个 Flask中有两种上下文:请求上下文 应用上下文请求上下文(request context)request 和 session 都属于请求上下文对象。 request:封装了HTTP请求的内容,针对的是http请求。user = reque...转载 2018-04-11 10:46:23 · 3062 阅读 · 0 评论 -
解决flask端口被占用的问题
问题提示:socket.error:[Errno 48] Address already in use 在编辑flask代码时,如果没有关闭flask的程序,默认的5000端口一直被占用。 再次运行的时候,会显示:socket.error: [Errno 48] Address already in uselsof查进程 因为之前占用的5000端口,所以直接用lsof查该端口占用的...转载 2018-04-10 20:18:29 · 6769 阅读 · 0 评论 -
flask中的wtf的作用
wtf的作用: 1. 在内部已经为我们封装好了前端页面的form 2. 已经做好了校验的工作代码实现: # coding:utf-8 from flask import Flask,render_template,request from flask_wtf import FlaskForm from wtforms import StringField,...转载 2018-04-10 19:09:13 · 1369 阅读 · 0 评论 -
Flask(8)-- 正则路由与自定义转换器
转换器的作用:是对url地址的限制自定义转换器的语法:&amp;amp;lt;converter:variable_name&amp;amp;gt;自定义转换器的步骤: 1. 自定义转换器必须继承BaseConverter类,自定义转换器需要重写父类的init方法,重点是注意参数。 2. 在调用时,《re(“.“):file_name》,会把 . 作为参数传给*args,再传给父类的regex作为正则,匹配url...原创 2018-04-10 16:50:55 · 2031 阅读 · 0 评论 -
Flask Web开发--狗书笔记004--第四章 Web表单
请求对象包含客户端发出的所有请求信息,其中,request.form能获取POST请求中提交的表单数据。笔者向我们介绍了一个Flask-WTF扩展,老惯例,首先是安装:pip install flask-wtf跨站请求伪造保护flask-wtf能保护所有表单免收跨站请求伪造的攻击。 至于什么是CSRF,emmm,这里暂时不做详细介绍了….为了实现csrf保护,flas...原创 2018-04-30 23:08:07 · 320 阅读 · 0 评论 -
Flask Web开发--狗书笔记005--第五章 数据库
SQL数据库想必大家比较熟悉,就不再重复说明了,只摘录我觉得有价值的点。表中还可以有称为外键的列,引用同一个表或者是不同表中某行的主键。行之间的这种联系称之为关系,这是关系型数据库的基础。关系型数据库比较高效,可以避免重复。NoSQL数据库一般使用集合代替表,使用文档代替记录。造成数据重复,但重复数据可以提升查询速度。使用SQL还是NoSQLsql数据库...原创 2018-05-01 11:55:06 · 613 阅读 · 0 评论 -
Flask -- (20)模板中的控制代码块
if 语句Jinja2 语法中的if语句跟 Python 中的 if 语句相似,后面的布尔值或返回布尔值的表达式将决定代码中的哪个流程会被执行:{%if user.is_logged_in() %} <a href='/logout'>Logout</a>{% else %} <a href='/login'>Login</a&g...原创 2018-08-30 22:39:21 · 534 阅读 · 0 评论 -
Flask -- (5)Flask 安装环境
(5)Flask 安装环境使用虚拟环境安装Flask,可以避免包的混乱和版本的冲突,虚拟环境是Python解释器的副本,在虚拟环境中你可以安装扩展包,为每个程序单独创建的虚拟环境,可以保证程序只能访问虚拟环境中的包。而不会影响系统中安装的全局Python解释器,从而保证全局解释器的整洁。虚拟环境使用virtualenv创建,可以查看系统是否安装了virtualenv:$ virtual...原创 2018-08-27 18:59:00 · 304 阅读 · 0 评论 -
Flask -- (4) Flask与其他框架之间的对比
(4) Flask与其他框架之间的对比概括Django功能大而全,Flask只包含基本的配置 Django的一站式解决的思路,能让开发者不用在开发之前就在选择应用的基础设施上花费大量时间。Django有模板,表单,路由,认证,基本的数据库管理等等内建功能。与之相反,Flask只是一个内核,默认依赖于两个外部库: Jinja2 模板引擎和 Werkzeug WSGI 工具集,其他很多功能都是...原创 2018-08-27 18:57:43 · 2316 阅读 · 0 评论 -
Flask -- (3) Flask常用扩展包以及相关文档
(3) Flask常用扩展包以及相关文档Flask-SQLalchemy:操作数据库; Flask-migrate:管理迁移数据库; Flask-Mail:邮件; Flask-WTF:表单; Flask-Bable:提供国际化和本地化支持,翻译; Flask-script:插入脚本; Flask-Login:认证用户状态; Flask-OpenID:认证; Flask-REST...原创 2018-08-27 18:55:17 · 434 阅读 · 0 评论 -
Flask --(2)Flask 框架的诞生
Flask诞生于2010年,是Armin ronacher(人名)用Python语言基于Werkzeug工具箱编写的轻量级Web开发框架。Flask本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login),都需要用第三方的扩展来实现。比如可以用Flask-extension加入ORM、窗体验证工具,文件上传、身份验证等。Flask没有默...原创 2018-08-27 18:54:17 · 860 阅读 · 0 评论 -
Flask -- (1)为什么要使用框架
为什么要使用框架Web(World Wide Web)诞生最初的目的,是为了利用互联网交流工作文档。 关于为什么要使用 web 框架? 如何生产一辆汽车? web网站发展至今,特别是服务器端,涉及到的知识、内容,非常广泛。这对程序员的要求会越来越高。如果采用成熟,稳健的框架,那么一些基础的工作,比如,安全性,数据流控制等都可以让框架来处理,那么程序开发人员可以把精力放在具体的业务...原创 2018-08-27 18:53:10 · 1228 阅读 · 0 评论