1、安装:css
输入如下命令能够检查系统是否安装了virtualenv :html
$ virtualenv --versionpython
若是结果显示错误,你就须要安装这个工具。sql
一、Ubuntu 用户可使用下述命令安装它:数据库
$ sudo apt-get install python-virtualenvflask
二、若是你的电脑是 Mac OS X 系统,就可使用 easy_install 安装 virtualenv :
$ sudo easy_install virtualenv/api
三、 Windows 浏览器
1 pip install virtualenv//安装虚拟环境 2 virtualenv flask//安装flask 3 4 //安装flask扩展 5 $ flask\Scripts\pip install flask 6 $ flask\Scripts\pip install flask-login 7 $ flask\Scripts\pip install flask-openid 8 $ flask\Scripts\pip install flask-mail 9 $ flask\Scripts\pip install flask-sqlalchemy 10 $ flask\Scripts\pip install sqlalchemy-migrate 11 $ flask\Scripts\pip install flask-whooshalchemy 12 $ flask\Scripts\pip install flask-wtf 13 $ flask\Scripts\pip install flask-babel 14 $ flask\Scripts\pip install guess_language 15 $ flask\Scripts\pip install flipflop 16 $ flask\Scripts\pip install coverage
2、环境bash
一、创建虚拟环境服务器
touch flasky
cd flasky
virtualenv venv
使用 virtualenv 命令在 flasky 文件夹中建立 Python 虚拟环境。建立虚拟环境后,当前文件夹中会出现一个子文件夹,名字就是上述命令中指定的参数,与虚拟环境相关的文件都保存在这个子文件夹中。按照惯例,通常虚拟环境会被命名为 venv
你使用 bash 命令行(Linux 和 Mac OS X 用户),能够经过下面的命令激活这个虚拟环境:
$ source venv/bin/activate
若是使用微软 Windows 系统,激活命令是:
$ venv\Scripts\activate
二、安装flask
查看是否安装成功,导入没有报错就成功
3、程序的基本结构
3.1初始化
建立一个flask实例
3.2路由和视图函数
客户端(例如 Web 浏览器)把请求发送给 Web 服务器,Web 服务器再把请求发送给 Flask程序实例。程序实例须要知道对每一个 URL 请求运行哪些代码,因此保存了一个 URL 到
Python 函数的映射关系。处理 URL 和函数之间关系的程序称为路由。
像 index() 这样的函数称为视图函数(view function)。视图函数返回的响应能够是包含
HTML 的简单字符串,也能够是复杂的表单。
动态的URL:
视图函数的做用是生成请求的响应
3.3 启动服务器
一个完整的代码程序
from flask import Flask app = Flask(__name__) @app.route('/') def index(): return '<h1>Hello World!</h1>' if __name__ == '__main__': app.run(debug=True
3.4 请求响应循环
一、程序和请求上下文
MVC模型
MVC是模型(model)、视图(view)、控制(controller)这三个单词上的首字母组成。M是指业务模型,V是指用户界面,C则是控制器。好比一批统计数据能够分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。
它强制性的使应用程序的输入、处理和输出分开。
MVC的处理过程是这样的:对于每个用户输入的请求,首先被控制器接收,控制器决定用哪一个模型来进行处理,而后模型经过业务逻辑层处理用户的请求并返回数据,最后控制器肯定用哪一个视图模型,用相应的视图格式化模型返回数据,并经过显示页面呈现给用户。
视图是用户看到并与之交互的界面。对老式的Web应用程序来讲,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要 的角色,但一些新的技术已层出不穷,它们包括Macromedia Flash和象XHTML,XML/XSL,WML等一些标识语言和Web services.
如何处理应用程序的界面变得愈来愈有挑战性。MVC一个大的好处是它能为你的应用程序处理不少不一样的视图。在视图中其实没有真正的处理发生,无论这些 数据是联机存储的仍是一个雇员列表,做为视图来说,它只是做为一种输出数据并容许用户操纵的方式。
如今咱们总结MVC的处理过程,首先控制器接收用户的请求,并决定应该调用哪一个模型来进行处理,而后模型用业务逻辑来处理用户的请求并返回数据, 最后控制器用相应的视图格式化模型返回的数据,并经过表示层呈现给用户。
4、模板
视图函数的做用很明确,即生成请求的响应,但通常而言,请求会改变程序的状态,而这种变化也会在视图函数中产生。
例如,用户在网站中注册了一个新帐户。用户在表单中输入电子邮件地址和密码,而后点击提交按钮。服务器接收到包含用户输入数据的请求,而后 Flask 把请求分发处处理注册请求的视图函数。这个视图函数须要访问数据库,添加新用户,而后生成响应回送浏览器。这两个过程分别称为业务逻辑和表现逻辑。
4.1 渲染模板
1 from flask import Flask,render_template 2 app = Flask(__name__) 3
4 @app.route('/') 5 def index(): 6 return render_template('index.html') 7
8 @app.route('/user/<name>') 9 def user(name): 10 return render_template('user.html',name=name) 11 if __name__=='__main__': 12 app.run()
Flask 提供的 render_template 函数把 Jinja2 模板引擎集成到了程序中。 render_template 函数的第一个参数是模板的文件名。随后的参数都是键值对,表示模板中变量对应的真实
值。在这段代码中,第二个模板收到一个名为 name 的变量。
左边的“name”表示参数名,就是模板中使用的占位符;右边的“name”是当前做用域中的变量,表示同名参数的值。
<h1>hello world!!</h1> <h1>hello,{{name}}!!</h1>
4.2 变量
Jinja2 能识别全部类型的变量,甚至是一些复杂的类型,例如列表、字典和对象。在模板中使用变量的一些示例以下:
<p>A value from a dictionary: {{ mydict['key'] }}.</p>
<p>A value from a list: {{ mylist[3] }}.</p>
<p>A value from a list, with a variable index: {{ mylist[myintvar] }}.</p>
<p>A value from an object's method: {{ myobj.somemethod() }}.</p>
可使用过滤器修改变量,过滤器名添加在变量名以后,中间使用竖线分隔。例如,
模板以首字母大写形式显示变量 name 的值:
Hello, {{ name|capitalize }}
4.3 静态文件
静态文件的引用被当成一个特殊的路由,即 /static/<filename>。例如,调用url_for('static', filename='css/styles.css', _external=True) 得 到 的 结 果 是 http://localhost:5000/static/css/styles.css。
1 {% block head %} 2 {{ super() }} 3 <link rel="shortcut icon" href="{{ url_for('static', filename = 'favicon.ico') }}" 4 type="image/x-icon"> 5 <link rel="icon" href="{{ url_for('static', filename = 'favicon.ico') }}" 6 type="image/x-icon"> 7 {% endblock %}
访问地址:http://localhost:5000/static/favicon.ico