Flask 入门(第三篇)
1. 安装虚拟环境
安装虚拟环境:
$ sudo pip install virtualenv
$ sudo pip install virtualenvwrapper
virtualenv --version # 检查版本
安装完虚拟环境后,如果提示找不到mkvirtualenv命令,须配置环境变量:
# 1、创建目录用来存放虚拟环境
mkdir $HOME/.virtualenvs
# 2、打开~/.bashrc文件,并添加如下:
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
# 3、运行
source ~/.bashrc
创建虚拟环境(ubuntu里须在联网状态下)
$ mkvirtualenv Flask_py
进入虚拟环境
$ workon Flask_py
退出虚拟环境
如果所在环境为真实环境,会提示deactivate:未找到命令
$ deactivate Flask_py
2. 安装Flask依赖包
安装依赖包(须在虚拟环境中): 依赖就是开发以及程序运行需要使用的环境的集合。包括软件、插件等。我们一般会把需要使用的依赖给保存在一个文件中,命名为requirements的txt文件。如果在其它环境中要运行我们的项目,直接通过指令可以一次性安装所有依赖。
安装依赖包(须在虚拟环境中):
$ pip install -r requirements.txt
生成依赖包(须在虚拟环境中):
$ pip freeze > requirements.txt
在ipython中测试安装是否成功
$ from flask import Flask
3. Flask 运行流程
客户端发起 HTTP 请求,web 服务器使用 WSGI 协议将来自客户端的请求交给 flask 实例。
WSGI 是 Python 语言定义的 web 服务器 和 web 应用程序之间的一种简单而通用的接口,它封装了 http 请求,解析 http 请求、发送 http 响应等这些底层代码。
程序实例使用 Werkzeug 做路由分发,根据每个 URL 请求,找到具体视图函数。router 内部会调用 add_url_route() 方法来实现路由注册。
调用视图函数,获取响应数据后,将数据传入 HTML 模板文件中,模板引擎负责渲染响应数据,然后由 flask 返回响应数据给浏览器,最后浏览器将数据显示给客户端。
4. 拓展
4.1 上下文
上下文就像一个容器,保存 Flask 程序运行时的一些信息。Flask 中有两种上下文:请求上下文、应用上下文。
请求上下文(request context)
request 和 session 都属于请求上下文对象
request:封装 HTTP 请求内容session:记录请求会话信息,如:保存用户信息session['username']= user.id
应用上下文(application context)
current_app 和 g 都属于应用上下文对象
current_app:当前运行程序文件的程序实例current_app.name打印当前应用程序实例名字
>>> from s3 import app
>>> from flask import Flask
>>> context = app.app_context()
>>> context.push()
>>> current_app.name
's3'
- g:处理请求时,用于临时存储的对象,每次请求时都会重设这个变量,一般用于获取临时请求的用户信息。
- 当调用app = Flask(name)的时候,创建了程序应用对象app;
- request 在每次http请求发生时,WSGI server调用Flask.call();然后在Flask内部创建的request对象;
- app的生命周期大于request和g,一个app存活期间,可能发生多次http请求,所以就会有多个request和g。
- 最终传入视图函数,通过return、redirect或render_template生成response对象,返回给客户端。
请求上下文和应用上下文区别
- 请求上下文:保存了客户端和服务器交互的数据。
- 应用上下文:在flask程序运行过程中,保存的一些配置信息,比如程序文件名、数据库的连接、用户信息等。
4.2 Flask-Script扩展命令行
除了可以使用 app.run() 传递参数外(可以传递 host/ip等),还可以通过 Flask-Script 拓展程序拓展命令行,从命令行传递这些参数:
app.py
from flask import Flask
from flask_script import Manager
app = Flask(__name__)
manager = Manager(app)
@app.route('/')
def index():
return 'OK'
if __name__ == "__main__":
manager.run()
通过 python app.py runserver --help 来查看可以传递的参数。(前提是你要安装好 Flask-Script)

Flask 入门(第三篇)的更多相关文章
- ElasticSearch入门 第三篇:索引
这是ElasticSearch 2.4 版本系列的第三篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...
- Flask 入门(第一篇)
1. 认识 Flask Flask 是一个微型 Web 框架,依赖于 jinjia2 模板系统和 Werkzeug WSGI(本质为 Socket 服务端) 服务,默认情况不支持数据库抽象层.表单验证 ...
- Flask 入门(第二篇)
1. 数据库 Flask 没有限定使用哪种数据库,不管是 SQL 还是 NoSQL.如果你不想自己编写负责的 SQL语句的话,你也可以使用 ORM,通过 SQLALchemy 即可实现. 1.1 SQ ...
- Flask 入门(三)
官方的文档虽然正规,但是有点太过书面语,有时候,明明很简单的一个程序,如果非要看它的说明,反而会让人疑惑不解,倒不如看一下别人写的简单的一个demo,jinjia2模板看官方的文档看了5回,愣是不明白 ...
- PowerBI入门 第三篇:报表设计技巧
最近做了几个PowerBI报表,对PowerBI的设计有了更深的理解,对数据的塑形(sharp data),不仅可以在Data Source中实现,例如在TSQL查询脚本中,而且可以在PowerBI中 ...
- flask基础---第三篇
flask中request的一些方法 首先from flask import request 1.request.path 2.request.host 3.request.host_url from ...
- flask入门(三)
表单 request.form 能获取POST 请求中提交的表单数据.但是这样不太安全,容易受到恶意攻击.对此,flask有一个flask-wtf扩展,用于避免这一情况 在虚拟环境下用pip inst ...
- Delphi xe7并行编程快速入门(三篇)
现在多数设备.计算机都有多个CPU单元,即使是手机也是多核的.但要在开发中使用多核的优势,却需要一些技巧,花费时间编写额外的代码.好了,现在可以使用Delphi做并行编程了. 在Delphi.C++ ...
- python爬虫入门---第三篇:保存一张图片
import requests import os url = 'http://imgsrc.baidu.com/forum/w%3D580%3B/sign=749ed018cecec3fd8b3ea ...
- python爬虫入门---第三篇:自动下载图片
适用的图片网站:美桌 源代码: import requests import re import urllib from bs4 import BeautifulSoup def get_html_t ...
随机推荐
- 暑假集训第一周比赛G题
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=83146#problem/G G - 向 Crawling in process... C ...
- hadoop集群增加新节点
上次hadoop集群一块数据盘报警, 提交工单后维修人员更换硬盘 服务器是dell r720的, 8盘位, 蛋疼的是这些硬盘都是做的单盘raid1,维修人员说必须关机导入硬盘才能正常使用 (服务器就这 ...
- linux 文件存取 软硬联接的区别
一.linux文件存取过程 在linux系统中根目录是自引用的,比如要找 /etc/sysconfig/networkscripts/ifcfg-0文件 先根据根目录/ 的inode号,在inode ...
- 英语发音规则---L字母
英语发音规则---L字母 一.总结 一句话总结:[l]音在词首和词尾的发音不同,/l/+其它音节./l/+元音./l/+/j/称它为清晰/l/,发清晰/l/音时,在下一个音即将出出时舌头离开上齿龈,迅 ...
- 机器学习(二十四)— 偏差Bias 与方差Variance
1.首先 Error = Bias + Variance Error反映的是整个模型的准确度, Bias反映的是模型在样本上的输出与真实值之间的误差,即模型本身的精准度, Variance反映的是模 ...
- 与STL文件相关的各类学习地址
几个网址: 1.STL :https://en.wikipedia.org/wiki/STL_(file_format)#ASCII_STL 2.一个博客的文章地址: 三维图形数据格式 STL的 读取 ...
- 从信用卡欺诈模型看不平衡数据分类(1)数据层面:使用过采样是主流,过采样通常使用smote,或者少数使用数据复制。过采样后模型选择RF、xgboost、神经网络能够取得非常不错的效果。(2)模型层面:使用模型集成,样本不做处理,将各个模型进行特征选择、参数调优后进行集成,通常也能够取得不错的结果。(3)其他方法:偶尔可以使用异常检测技术,IF为主
总结:不平衡数据的分类,(1)数据层面:使用过采样是主流,过采样通常使用smote,或者少数使用数据复制.过采样后模型选择RF.xgboost.神经网络能够取得非常不错的效果.(2)模型层面:使用模型 ...
- ajax(异步页面动态刷新)
AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术. AJAX = 异步 JavaScript和 ...
- 无旋Treap - BZOJ1014火星人 & 可持久化版文艺平衡树
!前置技能&概念! 二叉搜索树 一棵二叉树,对于任意子树,满足左子树中的任意节点对应元素小于根的对应元素,右子树中的任意节点对应元素大于根对应元素.换言之,就是满足中序遍历为依次访问节点对应元 ...
- yeoman,grunt,bower
Yeoman主要有三部分组成:yo(脚手架工具).grunt(构建工具).bower(包管理器).这三个工具是分别独立开发的,但是需要配合使用,来实现我们高效的工作流模式. http://www.cn ...