Flask实战 留言板 创建项目目录messageboard,从GreyLi的代码中把Pipfile和Pipfile.lock文件拷贝过来,这两个文件中定义了虚拟环境中需要安装的包的信息和位置,进入messageboard目录使用pipenv创建虚拟环境,这会同时安装所有依赖(--dev选项用来包括开发依赖), 安装完成后激活虚拟环境. 安装虚拟环境 pipenv install –dev 激活: flask shell 查看虚拟环境中安装的包: Pipfile:用来下载依赖包的 [[sourc…
使用Bootstrap-Flask简化页面编写 扩展Bootstrap-Flask内置了可以快速渲染Bootstrap样式HTML组件的宏,并提供了内置的Bootstap资源,方便快速开发,使用它可以简化在web程序里使用Bootstrap的过程. 扩展Bootstrap-Flask基于Flask-Bootstrap实现,旨在替代缺乏维护的后者.和Flask-Bootstrap相比,Bootstrap-Flask简化了大部分功能(比如未内置基模板),添加了Bootstrap4支持,并增加了一些辅…
Web程序开发流程 在实际的开发中,一个Web程序的开发过程要设计多个角色,比如客户(提出需求).项目经理(决定需求的实现方式).开发者(实现需求)等,在这里我们假设自己是一个人全职开发.一般来说一个web程序的开发流程如下所示: 1)  分析需求,列出功能清单或写需求说明书 2)  设计程序功能,写功能规格书和技术规格书 3)  进入开发和测试的迭代 4)  调试和性能等专项测试 5)  部署上线 6)  运行维护与营销等 写好功能规格书后,我们就可以进行实际的代码编写.在具体的开发中,代码编…
使用Faker生成虚拟数据 创建虚拟数据是编写Web程序时的常见需求.在简单的场景下,我们可以手动创建一些虚拟数据,但更方便的选择是使用第三方库实现.流行的python虚拟数据生成工具有Mimesis和Faker,后者同时支持python2和python3,而且文档中包含丰富的示例,所以这里选用Faker.首先用pipenv安装(使用—dev选项声明为开发依赖):pipenv install faker --dev Faker内置了20多类虚拟数据,包括姓名.地址.网络账号.信用卡.时间.职位.…
使用Flask-DebugToolbar调试程序 扩展Flask-DebugToolbar提供了一系列调试功能,可以用来查看请求的SQL语句.配置选项.资源加载情况等信息.这些信息在开发时会非常有用.首先使用pipenv安装Flask-DebugToolbar及其依赖: 然后实例化扩展提供的DebugToolExtension类,传入程序实例APP,以完成扩展的初始化: from flask immport Flask from flask_debugtoolbar import DebugTo…
一个py文件,一个html文件,可以直接运行 py文件 from flask import Flask, request, render_template, redirect, url_for import time app = Flask(__name__) users = [] # 这里存放所有的留言 @app.route('/say/', methods=['GET', 'POST']) def index(): if request.method == 'GET': return ren…
目的:通过留言板(todolist)与互粉功能,掌握php操作redis的方法 相关数据操作命令 1,keys * 查看数据库所有的key 2,type + key: 如 type uid     查看数据key的类型 3,批量删除key, 如redis-cli keys "auth:*" | xargs redis-cli del   这行命令在linux终端执行, 删除 auth: 开头的所有key 4....其他基本常用命令, 参照百度或者redis手册 0,连接redis &l…
之前在项目中我们发送邮件和 短信都是阻塞的,现在我们来利用Celery来优化它们 官方使用文档: http://flask.pocoo.org/docs/1.0/patterns/celery/ redis服务器及插件,还有cerely在上节我们已经安装好,这里就不重复过程了. 首先,来完成邮件 在项目下新建tasks.py from flask import Flask import config from celery import Celery from flask_mail import…
Flask中的信号使用的是一个第三方插件blinker.通过pip list看一下是否安装,如果没有,则使用如下命令安装 pip install blinker 自定义信号 自定义信号分为3步: ①定义一个信号--->②监听一个信号--->③发送一个信号 我们来用信号完成:当用户登录网站的时候,把用户登录日志记录到数据库中 我们创建一个singles.py来定义监听信号 在login视图发送信号 在浏览器中访问模拟登录 查看数据库已经记录了一条日志了 这种情况下,我们还可以用前面学到的g对象来…
Local线程隔离对象 我们知道通过request可以获取表单中的数据.如果是多个用户同时在用网站,而全局request就只有一个,那么Flask是如何分辨哪用户对应哪个请求呢? 这种情况下,就会用到Local对象,只要绑定在Local对象上的属性,在每个线程中都是隔离的 我们看看,使用多线程修改值,不用local对象时,因为request是全局共享的,只要修改了它的值,就会影响到其它线程! 当我们使用Local对象绑定时,因为在每个线程中都是隔离的,所以不会影响到其它线程 总结: 1.在Fla…