理解WTForms并灵活改造她
WTForms其实是非常强大的验证插件。但很多同学对WTForms的理解仅仅停留在“验证表单”上。那WTForms可以用来做API的参数验证码?完全可以,但这需要你灵活的使用它,对它做出一些“改变”。
默认情况下的form验证出现异常的时候是不直接抛出的,存在于form的errors中,如果我们想直接抛出,就需要更改重写。
1234567891011121314151617181920212223
...
Flask中自定义异常对象
1. 处理多客户端登录注册当存在多种类型的客户端的时候,我们就要编写多个验证Form,这时候继承是最好的选择。
对于api接口来说,一般传的数据格式都是json格式。这时我们要验证数据的时候,验证方式为
123456data = request.json# 这里相比于通过form提交 需要制定data参数 form = someForm(data=data)if for.validate():
...
Flask中如何创建一个自己的蓝图
我们之前学习过蓝图的使用,能够方便的将我们的业务逻辑进行切分成各个模块,这样逻辑相似的功能放在一个目录,很实用。那我们如何实现一个自己的蓝图呢?
先看一个路由
1@api.route('/v1/user/<int:uid>', methods=['GET'])
这样一个路由我们可以拆分成三个部分v1,user,<int:uid>。
这里我们使用两层蓝图注册来实现上面的路由,
...
使用Pipenv来创建虚拟环境
一直听说Pipenv大法好比virtualenv好,今天我们来学习下。
安装1pip install pipenv -i https://pypi.douban.com/simple
创建pipenv就是创建一个虚拟环境和项目绑定,这一点相比于virtualenv具有局限性。
如何和项目绑定呢?
一定要在项目目录下面执行绑定操作。
新建项目
12[root@hongshaorou ~]# mkdi
...
几个不错分Flask学习资源
记录几个学习地址有兴趣的可以收藏下:
1、The Flask Mega-Tutorial 教程这个教程是《Flask Web开发:基于Python的Web应用开发实战》作者 Miguel Grinberg 写的 2017版 Flask 教程,也是我强烈推荐给大家的 Flask 教程,英语阅读水平过得去的话,建议直接读原文,英语渣也有福音,国内已有网友把它翻译成了中文。
英文地址:https://b
...
在Flask中集成使用Celery
最近在阅读《深入理解Flask》,很好的一本书。
这篇我们来看看如何在Flask项目中集成使用Celery。这里的逻辑原理暂时我还没完全吃透,不过我已经实现了使用,方式稍微和书籍中不同,以后我吃透之后会慢慢完善。
下面开始我们的学习吧。
我们在Flask核心目录下创建一个包tasks。
在初始化模块中编写以下代码
123456789101112131415161718192021222324252
...
Flask基础学习最终篇-与Python结合-下
1. 使用多线程进行异步发送邮件我们知道在Flask中存在线程隔离,如果我们直接开启多线程的话是无法满足我们的需求的。
我们再看下current_app和flask核心对象实例化后的区别app = Flask()。
current_app是使用的代理,指代的并不是flask核心对象。在之前我们知道指代的是对应的堆栈的栈顶。但是当我们在一个请求中直接新开一个线程的时候,current_app就会出现
...
Flask基础学习最终篇-与Python结合-上
1. 重置密码的一些知识我们设计重置密码的时候,一般是发送一个重置密码的邮件到客户。邮件中一般包含用户信息来标识用户,标识用户一般有三种方法。
方法一:URL中附带用户ID
直接在邮件中附带用户ID会暴露用户ID,容易被篡改成其他用户ID
方法二:服务端加密用户ID
通过服务端加密然后附带到邮件,可以有效防止暴露ID
方法三:服务器缓存键值对
通过在服务器端缓存一个键值对,key为一串随机字
...
使用pyppeteer进行页面抓取
这个模块很不错,暂时记录下使用代码,有时间详细记录。
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859import asyncioimport timeimport sslfrom pyppeteer import launchs
...
Flask基础学习-模型篇
1. Python的@contextmanager装饰器我们使用sqlalchemy的ORM机制进行数据保存的时候默认是开启事务的。只有我们在commit之后数据才真正保存到数据库。但是,当commit出现故障就会导致数据导入失败,这时我们需要回滚事务。
12345678try: gift = Gift() gift.uid = current_user.id db.sessio
...