一.介绍

Flask是一个python实现的web开发微框架。和Django一样,也是一个基于MVC设计模式的WEB框架。

官方文档: https://flask.palletsprojects.com/en/0.12.x/

中文文档:http://docs.jinkan.org/docs/flask/

Flask 依赖三个外部库:Werkzeug , Jinja2 ,Itsdangerous。

Werkzeug 是一个 WSGI(在 Web 应用和多种服务器之间的标准 Python 接口) 工具集。Jinja2 负责渲染模板。Itsdangerous基于Django的签名模版。

二.安装

安装Flask:

pip install Flask

安装文档:http://docs.jinkan.org/docs/flask/installation.html#installation

安装虚拟环境:

flask环境 python flask documentation_环境变量


flask环境 python flask documentation_环境变量_02

 

三.MVC设计模式

核心思想:前后端解耦

优点:降低各个模块之间的耦合,方便变更,更容易重构代码,最大程度实现了代码的重用。

一种软件设计典范,用一种业务逻辑,使数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面与用户交互的同时,不需要重新编写业务逻辑。

MVC被独特的发展起来用于映射传统的输入,处理和输出功能在一个逻辑的图形化界面结构中。

四.MVT模式

django和flask都是使用的MVT模式。

本质上与MVC没有什么差别,也是各个组件之间为了保持松耦合关系,只是定义上有点点不同。

Model:负责业务对象与(ORM)数据库的对象

View:负责业务逻辑,并在适当的时候调用Model和Template

Template:负责把页面展示给用户

五.Linux环境变量

linux环境变量:

  • 系统级别
  • /etc/envirtonment,该方法是修改系统环境配置文件,如
  • # 如果/etc/bashrc文件不可编辑,需要修改为可编辑 chmod -v u+w /etc/environment
  • vim /etc/profile
  • # 在最后一行加上 export PATH=$PATH:/home/uusama/mysql/bin
  • 手动source /etc/environment生效  
  • /etc/profile,该方法修改系统配置,如:
  • # 如果/etc/profile文件不可编辑,需要修改为可编辑 chmod -v u+w /etc/profile
  • vim /etc/profile
  • # 在最后一行加上 export PATH=$PATH:/home/uusama/mysql/bin
  • 手动source /etc/profile生效  
  • vim/etc/bashrc,该方法修改系统配置,如:
  • # 如果/etc/bashrc文件不可编辑,需要修改为可编辑 chmod -v u+w /etc/bashrc
  • vim /etc/bashrc
  • # 在最后一行加上 export PATH=$PATH:/home/uusama/mysql/bin
  • 手动source /etc/bashrc生效  
  • 用户级别
  • ~/.bashrc,如:
  • vim ~/.bashrc,
  • # 在最后一行加上 export PATH=$PATH:/home/uusama/mysql/bin,
  • 手动source ~/.bashrc生效
  • ~/.bash_profile,如:
  • vim ~/.bash_profile
  • # 在最后一行加上 export PATH=$PATH:/home/uusama/mysql/bin
  • 手动source ~/.bash_profile生效
  • 注意:如果没有~/.bash_profile文件,则可以编辑~/.profile文件或者新建一个     
  • 临时级别
  • 在shell窗口中直接export,如:export PATH=$PATH:/home/uusama/mysql/bin

读取linux环境变量的方法:

  • export命令显示当前系统定义的所有环境变量
  • echo $PATH命令输出当前的PATH环境变量的值

Linux环境变量加载原理解析:

环境变量可以简单的分成用户自定义的环境变量以及系统级别的环境变量。

  • 用户级别环境变量定义文件:~/.bashrc~/.profile(部分系统为:~/.bash_profile
  • 系统级别环境变量定义文件:/etc/bashrc/etc/profile(部分系统为:/etc/bash_profile)、/etc/environment

在用户环境变量中:

系统会首先读取~/.bash_profile(或者~/.profile)文件,如果没有该文件则读取~/.bash_login,根据这些文件中内容再去读取~/.bashrc

六.flask环境变量:

flask在起动的时候会检测运行的环境,如果没有配置环境,会默认为production,会发出警告

WARNING: This is a development server. Do not use it in a production deployment.

 

改变环境变量,shell窗口输入vim ~/.bashrc

最后一行添加
# flask env
export FLASK_ENV='develop'

立即生效: source ~/.bashrc

 

七.HelloWorld

from flask import Flask

app = Flask(__name__)


@app.route('/')
def hello_world():
    return 'Hello World!'


if __name__ == '__main__':
    # run参数:
    # debug: 是否开启调试模式,开启后,修改python代码会自动重启
    # threaded: 是否开启多线程
    # port: 指定服务器端口,默认5000
    # host: 指定服务器主机地址, 默认是127.0.0.1,指定为0.0.0.0代表本机所有ip
    app.run()

 

 

 

八.生产环境部署

两种方法:

方法一:

from gevent import pywsgi

if __name__ == '__main__':
server = pywsgi.WSGIServer(('0.0.0.0', 5000), app)
server.serve_forever()
方法二:

from wsgiref.simple_server import make_server

if __name__ == '__main__':
server = make_server('', 64570, app)
server.serve_forever()