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)

requestsession 都属于请求上下文对象

  • request:封装 HTTP 请求内容
  • session:记录请求会话信息,如:保存用户信息 session['username']= user.id

应用上下文(application context)

current_appg 都属于应用上下文对象

  • 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 入门(第三篇)的更多相关文章

  1. ElasticSearch入门 第三篇:索引

    这是ElasticSearch 2.4 版本系列的第三篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...

  2. Flask 入门(第一篇)

    1. 认识 Flask Flask 是一个微型 Web 框架,依赖于 jinjia2 模板系统和 Werkzeug WSGI(本质为 Socket 服务端) 服务,默认情况不支持数据库抽象层.表单验证 ...

  3. Flask 入门(第二篇)

    1. 数据库 Flask 没有限定使用哪种数据库,不管是 SQL 还是 NoSQL.如果你不想自己编写负责的 SQL语句的话,你也可以使用 ORM,通过 SQLALchemy 即可实现. 1.1 SQ ...

  4. Flask 入门(三)

    官方的文档虽然正规,但是有点太过书面语,有时候,明明很简单的一个程序,如果非要看它的说明,反而会让人疑惑不解,倒不如看一下别人写的简单的一个demo,jinjia2模板看官方的文档看了5回,愣是不明白 ...

  5. PowerBI入门 第三篇:报表设计技巧

    最近做了几个PowerBI报表,对PowerBI的设计有了更深的理解,对数据的塑形(sharp data),不仅可以在Data Source中实现,例如在TSQL查询脚本中,而且可以在PowerBI中 ...

  6. flask基础---第三篇

    flask中request的一些方法 首先from flask import request 1.request.path 2.request.host 3.request.host_url from ...

  7. flask入门(三)

    表单 request.form 能获取POST 请求中提交的表单数据.但是这样不太安全,容易受到恶意攻击.对此,flask有一个flask-wtf扩展,用于避免这一情况 在虚拟环境下用pip inst ...

  8. Delphi xe7并行编程快速入门(三篇)

    现在多数设备.计算机都有多个CPU单元,即使是手机也是多核的.但要在开发中使用多核的优势,却需要一些技巧,花费时间编写额外的代码.好了,现在可以使用Delphi做并行编程了. 在Delphi.C++ ...

  9. python爬虫入门---第三篇:保存一张图片

    import requests import os url = 'http://imgsrc.baidu.com/forum/w%3D580%3B/sign=749ed018cecec3fd8b3ea ...

  10. python爬虫入门---第三篇:自动下载图片

    适用的图片网站:美桌 源代码: import requests import re import urllib from bs4 import BeautifulSoup def get_html_t ...

随机推荐

  1. 暑假集训第一周比赛G题

    http://acm.hust.edu.cn/vjudge/contest/view.action?cid=83146#problem/G G - 向 Crawling in process... C ...

  2. hadoop集群增加新节点

    上次hadoop集群一块数据盘报警, 提交工单后维修人员更换硬盘 服务器是dell r720的, 8盘位, 蛋疼的是这些硬盘都是做的单盘raid1,维修人员说必须关机导入硬盘才能正常使用 (服务器就这 ...

  3. linux 文件存取 软硬联接的区别

    一.linux文件存取过程 在linux系统中根目录是自引用的,比如要找 /etc/sysconfig/networkscripts/ifcfg-0文件 先根据根目录/ 的inode号,在inode ...

  4. 英语发音规则---L字母

    英语发音规则---L字母 一.总结 一句话总结:[l]音在词首和词尾的发音不同,/l/+其它音节./l/+元音./l/+/j/称它为清晰/l/,发清晰/l/音时,在下一个音即将出出时舌头离开上齿龈,迅 ...

  5. 机器学习(二十四)— 偏差Bias 与方差Variance

    1.首先 Error = Bias + Variance  Error反映的是整个模型的准确度, Bias反映的是模型在样本上的输出与真实值之间的误差,即模型本身的精准度, Variance反映的是模 ...

  6. 与STL文件相关的各类学习地址

    几个网址: 1.STL :https://en.wikipedia.org/wiki/STL_(file_format)#ASCII_STL 2.一个博客的文章地址: 三维图形数据格式 STL的 读取 ...

  7. 从信用卡欺诈模型看不平衡数据分类(1)数据层面:使用过采样是主流,过采样通常使用smote,或者少数使用数据复制。过采样后模型选择RF、xgboost、神经网络能够取得非常不错的效果。(2)模型层面:使用模型集成,样本不做处理,将各个模型进行特征选择、参数调优后进行集成,通常也能够取得不错的结果。(3)其他方法:偶尔可以使用异常检测技术,IF为主

    总结:不平衡数据的分类,(1)数据层面:使用过采样是主流,过采样通常使用smote,或者少数使用数据复制.过采样后模型选择RF.xgboost.神经网络能够取得非常不错的效果.(2)模型层面:使用模型 ...

  8. ajax(异步页面动态刷新)

    AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术. AJAX = 异步 JavaScript和 ...

  9. 无旋Treap - BZOJ1014火星人 & 可持久化版文艺平衡树

    !前置技能&概念! 二叉搜索树 一棵二叉树,对于任意子树,满足左子树中的任意节点对应元素小于根的对应元素,右子树中的任意节点对应元素大于根对应元素.换言之,就是满足中序遍历为依次访问节点对应元 ...

  10. yeoman,grunt,bower

    Yeoman主要有三部分组成:yo(脚手架工具).grunt(构建工具).bower(包管理器).这三个工具是分别独立开发的,但是需要配合使用,来实现我们高效的工作流模式. http://www.cn ...