Flask
文章平均质量分 81
Jenrey
这个作者很懒,什么都没留下…
展开
-
Flask框架中的四种请求勾子
Flask框架中的四种请求勾子文章目录Flask框架中的四种请求勾子四种勾子详解场景应用在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理 比如:在请求开始时,建立数据库连接;在请求开始时,根据需求进行权限校验;在请求结束时,指定数据的交互格式;四种勾子详解为了让每个视图函数避免编写重复功能的代码,Flask提供了通用设施的功能,即请求钩子。 请求钩子是通过***装饰器*** 的形式实现,Flask支持如下四种请求钩子:before_first_request原创 2021-06-19 11:20:33 · 454 阅读 · 0 评论 -
flask post获取前端请求参数的三种方式
post请求python flask获取前端发来的参数有三种方式1、放在params里面from flask import request# params拿请求data = {}for key in request.args: data[key] = request.args.get(key)file_type = data['file_type']safety_check_command = data['safety_check_command']remark =.原创 2020-05-21 18:23:51 · 5679 阅读 · 0 评论 -
重写flask_sqlalchemy的BaseQuery下面的filter_by方法
引出重写的原因,我们是通过软删除的方式来删除数据的(即通过status标识来确定数据是否作废)那么这样的话,我们每一次查询的时候都要写上条件status=1很繁琐。我们可以重写filter_by方法如上图所示我们现在使用的查询方式并不是SQLAlchemy原生的查询方式,而是flask_sqlalchemy(是对原生SQLAlchemy的一个封装),是因为flask觉得原生的SQL...原创 2019-01-29 17:38:02 · 4098 阅读 · 1 评论 -
flask之current_app的使用及详解
【current_app】之前在写项目的时候也有用到current_app,大牛讲的是代表了当前项目的app,当然写完项目也没有任何问题。from flask import Flask, current_appapp = Flask(__name__)print(app) #输出结果:<Flask '1_current_app'>相信大家对这段代码是没有问题的,...原创 2019-01-23 11:06:42 · 17639 阅读 · 2 评论 -
python之flask_sqlalchemy的使用及详解
@orm.reconstructorsqlalchemy创建实例的时候并不是像我们普通通过构造函数这样创建的方式来创建的, 而是通过元类的方式动态的创建实例对象。在python里面绝大多数的ORM都是通过元类的方式来创建对象,而不是通过普通实例化方式来创建的。那么通过元类的方式创建至少在sqlalchemy里面是不会通过构造函数来创建的。如果我们就想在模型对象实例化的时候执行__init_...原创 2019-01-23 12:37:52 · 8991 阅读 · 0 评论 -
uWSGI和Nginx
1.WSGI(Web Server Gateway Interface)服务器网关接口是Python应用程序或框架和Web服务器之间的一种接口,已经被广泛接受, 它已基本达成它的可移植性方面的目标。 WSGI 没有官方的实现, 因为WSGI更像一个协议. 只要遵照这些协议,WSGI应用(Application)都可以在任何服务器(Server)上运行, 反之亦然。 WSGI标准在 PEP ...原创 2019-01-28 12:56:38 · 849 阅读 · 0 评论 -
cookie在flask中的应用、flask-login模块的使用(login_user、@login_required、@login_manager.user_loader)current_user
1、什么是用户登录票据有两层意思:如果用户持有票据 ,我们就认为用户的身份是合法的 我们可以根据票据知道当前用户到底是谁和身份证的意义是一样的,有身份证才说明你是合法公民,我们也就能知道你到底是谁。身份证都有一个有效期,那么这个票据也需要有一个有效期2、服务器用什么样的机制把票据返回到客户端上去,并存储在客户端里的呢?对于我们的网站而言,服务器是将我们的票据信息写入到c...原创 2019-01-28 09:44:11 · 2971 阅读 · 0 评论 -
使用werkzeug.security的generate_password_hash加密,及check_password_hash加密及对比
generate_password_hash使用方法:直接导入generate_password_hash方法,然后传入 想加密的字符串 即可。需要注意的是,如果要保存到数据库中记得设置String(128),64可能不太够存储。check_password_hash使用说明:导入check_password_hash并使用其方法来做密码的加密和对比。第一个参数传入我们需要对比的密...原创 2019-01-28 00:33:29 · 8188 阅读 · 0 评论 -
在flask中使用jsonify和json.dumps的区别
flask提供了jsonify函数供用户处理返回的序列化json数据,而python自带的json库中也有dumps方法可以序列化json对象,那么在flask的视图函数中return它们会有什么不同之处呢?想必开始很多人和我一样搞不清楚,只知道既然框架提供了方法就用,肯定不会错。但作为开发人员,我们需要弄清楚开发过程中各种实现方式的特点和区别,这样在我们面对不同的需求时才能做出相对合理的选择,而...原创 2019-01-16 16:11:33 · 795 阅读 · 0 评论 -
flask的Blueprint蓝图的使用
Blueprint是flask库中的一个模块,作为蓝图,必定有它的道理。它是Flask项目的一种组件式开发,可以在一个应用内或跨越 多个项目共用蓝图。使用蓝图可以极大地简化大型应用的开发难度,也为Flask扩展 提供了一种在应用中注册服务的集中式机制。 模块化管理程序路由是它的特色,它使程序结构清晰、简单易懂。先放项目结构:蓝图的主要作用就是模块化路由首先我们新建一个python的...原创 2019-01-16 15:54:36 · 767 阅读 · 0 评论 -
python-flask之request的属性
#代码示例,仅仅是为了测试request的属性值@app.route('/login', methods = ['GET','POST'])def login(): if request.method == 'POST': if request.form['username'] == request.form['password']: retu...原创 2019-01-16 12:23:17 · 1497 阅读 · 0 评论 -
pycharm开发flask指定ip、端口无效(已解决,看着一篇就够了)
网上看了很多解决方案,但是都解决不了。原因分析是因为使用了pycharm2018版本的问题。并不是flask框架本身的问题(不管你是如何设置的flask配置,通过加载config也好,还是通过run的时候传入形参也好,均不影响)。可以很明显的看出上图的问题,虽然我们制定了参数,但是还是不好使。解决方案:pycharm2018会自动识别出来你的flask项目(即使你创建项目的...原创 2019-01-30 10:44:08 · 19671 阅读 · 18 评论 -
使用SQLAlchemy创建数据模型
https://blog.csdn.net/happyanger6/article/details/53947162如前所述,模型(models)是对数据抽象并提供通用访问接口的一种方式。在大多数网络应用中,数据会被存储在一个关系数据库管理系统(RDBMS)中,也就是把数据格式化存储在由行与列组成的表格中,且能够跨表对数据进行比较。例如MySQL,Postgres,Oracle,MSSQL。...原创 2019-01-30 12:55:01 · 2406 阅读 · 0 评论 -
Python flask-mail的安装及使用
首先Python的标准库中是提供了发送email这样的接口的,但是是比较偏底层的。需要我们自己控制的参数比较多,使用起来不是很方便。Flask提供给我们发送电子邮件的插件1、安装flask-mail插件pip install flask-mail2、在app中注册插件导入mail实例化mail把app传入进来,注册这个插件3、使用使用.send()方...原创 2019-02-13 08:14:44 · 2315 阅读 · 0 评论 -
Flask中的循环引用/导入问题演示以及解决方案 | 蓝图的使用与解析 | 蓝图额外用法
https://blog.csdn.net/iehadoop/article/details/83018858原创 2019-08-07 18:04:35 · 621 阅读 · 0 评论 -
Flask操作session
直接上代码from flask import Flask,sessionimport osapp = Flask(__name__)app.config['SECRET_KEY'] = os.urandom(24) # 必须要设置否则报错,RuntimeError:会话不可用,因为没有设置密钥。将应用程序上的secret_key设置为唯一且保密的内容。# 添加数据到session中...原创 2019-06-27 20:37:29 · 1645 阅读 · 0 评论 -
【总结】一篇关于flask框架开发的知识点汇总手册(纯干货)
1、针对flask框架的web项目html文件写在templates文件夹里面css文件还有静态资源(例如图片)放在static文件夹里面,直接访问 localhost:80/static/a.jpg应用程序根目录是根据初始化app=Flask(__name__)的时候的代码在哪就决定了哪里是根目录更改flask的默认设置静态资源位置:static_folderapp...原创 2019-06-17 14:33:55 · 2955 阅读 · 0 评论 -
python flask用户权限管理 接口访问权限思路
1、关于用户权限的几种情况举例:2、解决思路:明确一点我们还是要使用@auth.login_required和@auth.verify_password,因为这样可以把接口不公开暴露我们可以把权限信息写入到token令牌中我们可以把A、B、C、D看做是表,可以写到mysql、redis或者就写到我们的代码里。其实最好是把这种对应关系做成配置文件的形式。那么,我们先给...原创 2019-02-21 09:57:14 · 11421 阅读 · 0 评论 -
Python flask之token相关知识及HTTPBasicAuth的使用
目录1、网站的用户登录流程:2、API的用户流程:3、token令牌的三个基本特征4、代码实现5、令牌的使用思路6、编写验证token的装饰器7、使用HTTPBasicAuth的方式发送账号密码8、通过HTTPBasicAuth的方式发送token9、验证token验证token是否合法:验证令牌是否过期:读取令牌信息:10、关于8和9的代码总览...原创 2019-02-14 15:54:31 · 6008 阅读 · 3 评论 -
Python flask自定义异常信息,返回json格式的异常
我们要实现下图所示,报错后返回json格式的信息,相当于把默认的html格式的异常变成json格式的。但是我们继承了HTTPException就会出现下图的结果:首先异常分为两种:完全可以预知的异常 已知异常 可以手动抛出我们定义好的APIException 我们完全没有意识到的异常 未知异常已知异常的编写:完整代码如下:from flask import re...原创 2019-02-14 11:33:24 · 5197 阅读 · 1 评论 -
flask jsonify之序列化时的default函数、jsonify序列化自定义对象
目录1.看源码2、重写默认的default函数,实现自己的序列化机制3、把对象转化成字典3.1 __dict__的方式3.2、定义keys和__getitem__的方式4、最终的代码实现5、关于default函数的其他知识1.看源码打开site-package,flask,json,__init__.pyjsonify回去调用default()函数,我们...原创 2019-02-19 16:17:32 · 3473 阅读 · 1 评论 -
Flask abort和errorhandler、app_errorhandler进行请求中断及自定义异常处理
目录abort中断请求errorhandler捕捉当前app或蓝图的状态码,并进行自定制处理app_errorhandler捕捉全局状态码,并进行自定制异常处理补充说明在view函数中,如果需要中断request,可以使用abort(500)或者直接raise exception。当然我们还需要返回一个出错信息给前端,所以需要定制一下ErrorHandler。一般只需要两个个h...原创 2019-02-13 16:33:11 · 1903 阅读 · 1 评论 -
Python Flask itsdangerous的使用
目录1、生成token2、读取token3、对于非法或者过期的token处理itsdangerous库提供了对信息加签名(Signature)的功能1、生成token实例化可以理解为一个序列化器,第一个参数要求我们传入一个几乎是独一无二的随机字符串串在配置文件中写入随机字符串第二个参数接收一个过期时间,最后就变出如下实例化代码了把用户信息写入...原创 2019-02-13 09:40:52 · 1729 阅读 · 0 评论 -
flask项目端口设置无效
程序设置(该方法无效):解决方法:右上角打开 "Edit Configurations" ,在Additional Options处设置启动参数删掉之前在run方法中设置的参数,再次运行OKpycharm开发flask指定ip、端口无效(已解决,看着一篇就够了)...原创 2019-01-10 09:01:12 · 2281 阅读 · 1 评论 -
flask获取参数类型和请求响应
flask重要的两种请求:GET (大多是url请求) POST (大多是表单的提交)(1)GET请求的的参数类型:str(默认) int float path uuid# 没规定,默认(str)@blue.route('/hello/<name>/')def hello_mian(name): return 'hello %s' % (name)...原创 2019-01-09 13:46:11 · 2016 阅读 · 0 评论 -
flask的路由实现原理(/hello和/hello/的区别)
咱们以路由/hello和/hello/的区别为例下面我们在浏览器的地址栏中访问/hello,注意不是/hello/可以看出有两次的请求,因为这种写法在flask的内部是经过了转发的,怎么看出来是经过了转发,通过http的headers中的Location可以看出是转发到了这个地址。不管你在url中写的是/hello还是/hello/,在浏览器的地址栏中看到的都是/h...原创 2019-01-17 23:11:31 · 2350 阅读 · 2 评论 -
flask系列---ORM与SQLAlchemy (3) - flask-migrate数据库迁移(七)
在上一遍文章中,我们增加了两个模型Questions和Comments,并为Users增加了avatar_path这个字段,然后通过这段代码更新到数据库:with app.test_request_context(): db.drop_all() db.create_all()因为当使用过db.create_all()之后,再次直接使用db.create_all(),对模...原创 2019-01-02 17:46:35 · 827 阅读 · 0 评论 -
flask系列---ORM与SQLAlchemy (2) - 模型关系与引用(六)
承接上文,我们的Q&A demo,除了用户表,还需要存储所有问题内容的表questions_info和存储所有评论的表comments_info,并且都和users_info通过外键来关联。我们不排除后续需要更多表的可能性,把所有模型和视图函数写在一起看着也太混乱了!为此,我们新建一个models.py,把三个模型都放在这里。由于是新建的models.py文件,我们同样要先在开头生成一...原创 2019-01-02 17:45:11 · 829 阅读 · 0 评论 -
flask系列---ORM与SQLAlchemy (1) - 建立第一个模型(五)
后端一个重要的点就是与数据库联系,例如网页的注册、登录,内容的更新等都需要与数据库建立关系。以MySQL数据库为例,平时我们会用mysqldb(python 2)或者pymysql(python 3)去操作MySQL数据库,但这种方法也是需要自己编写SQL语句的。现在我们有了ORM模型,简单来说,ORM是把数据库中的表抽象成模型,表的列名对应模型的属性,这样我们可以调用类的属性或方法去获得数据库中...原创 2019-01-02 17:43:38 · 1154 阅读 · 2 评论 -
flask系列---模板的继承及Bootstrap实现导航条(四)
在建设一个网站的时候,不同的页面有很多元素是一样的,比如导航条、侧边栏等,我们可以使用模板的继承,避免重复编写html代码。现在我们打算实现一个在网页上方的导航条,并在所有的页面中继承这个导航条。导航条的建立,我们直接使用Bootstrap提供的如下导航条的样式。但在使用Bootstrap的导航条样式之前,需要先引用Bootstrap所需要的css和js文件以及jQuery,我们在html...原创 2019-01-02 17:41:06 · 2025 阅读 · 0 评论 -
flask系列---反转函数url_for与重定向redirect(二)
flask系列---第一个Flask程序、DEBUG模式及URL传参(一)在flask中,我们导入url_for和redirect两个函数。from flask import Flask, url_for, redirect 首先看url_for,简单来说,这个函数接受视图函数的名字(字符串形式)作为参数,返回视图函数对应的url,例如:@app.route('/')d...原创 2019-01-02 17:38:44 · 1515 阅读 · 0 评论 -
flask系列---第一个Flask程序、DEBUG模式及URL传参(一)
0.引言Flask是一个python的Web后端框架,类似的还有Django、web.py、tornado等,我选择Flask作为开始学习后端的框架,网上也有很多关于不同框架之间的比较,Flask的特点在于小巧灵活、扩展性强等,当然没有最好的,只有最合适的,不同框架的异同在此不再赘述。前期需掌握的知识: 1.对python有一个基本的掌握;可以看完一本python入门的书籍,网上...原创 2019-01-02 17:37:37 · 1334 阅读 · 0 评论 -
flask系列---render_template渲染模板及jinja2(三)
flask系列---反转函数url_for与重定向redirect(二)返回html文件我们之前的视图函数,返回的都是简单的'Hello Wolrd'之类的字符串,怎么返回一个html呢?首先我们在templates文件夹建立一个html文件,内容随便写一点如下:<!DOCTYPE html><html lang="en"><head> ...原创 2019-01-02 17:15:31 · 4931 阅读 · 0 评论 -
HTTP Authorization
今天部署了一个Authorization项目,由于改了auth服务器客户端id和密码,而前端请求header没有修改,登录时一直弹框要求输入用户名和密码,输入后却无效,只好改前端代码。改完只好就可以了。以下是参考文章。POST /goform/ser2netconfigAT HTTP/1.1Host: 192.168.16.254Connection: keep-aliveAuthor...原创 2019-01-17 11:36:55 · 33510 阅读 · 0 评论 -
Flask 扩展 HTTP认证--flask-httpauth
Restful API不保存状态,无法依赖Cookie及Session来保存用户信息,自然也无法使用Flask-Login扩展来实现用户认证。所以这里,我们就要介绍另一个扩展,Flask-HTTPAuth。pip install flask-httpauth接下来创建扩展对象实例:from flask import Flaskfrom flask_httpauth import...原创 2019-01-17 11:24:34 · 2716 阅读 · 0 评论 -
flask之g对象
1.什么是g对象。1.在flask中,有一个专门用来存储用户信息的g对象,g的全称的为global。2.g对象在一次请求中的所有的代码的地方,都是可以使用的。2.g对象和session的区别在我看来,最大的区别是,session对象是可以跨request的,只要session还未失效,不同的request的请求会获取到同一个session,但是g对象不是,g对象不需要管过期时间,请求...原创 2019-01-17 11:10:42 · 1182 阅读 · 0 评论 -
flask系列---注册和登录功能实现(1)—— 页面设计和获取POST数据(八)
在导航条中,右侧有登录和注册两个链接,储存用户数据的Users模型也有了,现在我们来实现登录和注册的功能。先来看注册功能的实现,新建一个视图函数,如下:@app.route('/register/')def register(): return render_template('register.html')在导航条模板base.html中,为注册添加链接,使用url_fo...原创 2019-01-02 17:48:13 · 2996 阅读 · 1 评论 -
flask系列---注册和登录功能实现(2)—— 注册与登录的错误提示(九)
在注册和登录功能实现(1)中,我们已经获取到了页面POST过来的登录或者注册数据,接下来我们需要与数据库中的数据做验证,验证通过才能登录或者注册。我们平时在登录网站时,如果输入的用户名或者密码错误,有的网站是在登录框附近提示错误,也有的是跳转到一个页面提示出错,并经过几秒倒计时再返回原来的页面。我们在后续做搜索功能的时候,用页面跳转来处理未找到结果的情形,这里就通过使用Flask的flash功能...原创 2019-01-02 17:50:33 · 5496 阅读 · 4 评论 -
flask系列---注册和登录功能实现(3)—— 注册数据写入数据库(十)
现在数据获取到了,提示也有了,我们需要把注册的数据写入到数据库,这一步很简单,直接使用之前提到的方法,但是我们不能直接把明文密码写入到数据库中,那样做是十分不安全的,我们需要将其加密之后再写进去,具体是用到werkzeug.security中的generate_password_hash这个函数,将字符串变成hash值。我们可以在User模型中重写__init__函数(或__setattr__)...原创 2019-01-02 17:51:41 · 3077 阅读 · 0 评论 -
flask中的视图函数的return返回的是什么
1.返回的是response对象2.返回的有一些附加信息例如:context-type=text/html 这context-type是在http的headers中的status:200,400,401例如下面的代码返回的是空的,因为浏览器会解析html标签,但是我们标签里面没有内容所以无任何显示如果想当做普通字符串打印出来就需要返回的content-type=tex...原创 2019-01-17 22:42:10 · 4228 阅读 · 3 评论