初识flask
目录
flask
创建并使用虚拟环境
因为不同环境所需要的包版本不同,装在一起会产生冲突,所以使用虚拟环境来将它们分割开
pip install virtualenv virtualenvwrapper-win # 安装虚拟环境基本的依赖包
mkvirtualenv flask # 创建一个名为flask的虚拟环境
workon flask # 进入虚拟环境flask
deactivate # 退出当前虚拟环境
rmvirtualenv flask # 删除名为flask 的虚拟环境
基本流程
- 1.创建flask app
- 2.定义一个视图函数
- 2.1对视图函数进行路由配置
- 1.使用app装饰器配置路由
- 2.调用app的方法add_url_rule 给视图函数配置路由
- 3.运行app
from flask import Flask
# 1.创建一个flask的app
app = Flask(__name__)
# __name__ 当前文件的名字
# __file__ 当前文件的路径
# 2.创建视图函数,利用装饰器可以配置路由
@app.route('/')
def index():
return 'hello Flask'
# 创建视图函数
def two():
return '<h1>two page</h1>'
# 调用app的add_url_rule方法配置路由
app.add_url_rule('/two',view_func=two)
if __name__ == '__main__':
# 3.运行app
app.run(debug=True,port=1000,host='0.0.0.0')
配置文件
在配置项较多时,通过专门的配置文件,读取配置项
创建一个配置文件,习惯性命名为settings.py
class Config(object):
# 配置项内容在flask中已经规定好
DEBUG = True
读取
from flask import Flask
from app.settings import Config
# 1.创建一个flask的app
app = Flask(__name__)
# 1.2 从配置文件的配置类中加载配置项
app.config.from_object(Config)
# 2.创建视图函数,利用装饰器可以配置路由
@app.route('/')
def index():
return 'hello Flask'
# 创建视图函数
def two():
return '<h1>two page</h1>'
# 调用app的add_url_rule方法配置路由
app.add_url_rule('/two',view_func=two)
if __name__ == '__main__':
# 3.运行app
app.run(port=10000)
工厂模式
如果在一个函数中 创建对象,那么就可以创建多个实例。
那么这样做有什么用呢?
- 用于测试。可以针对不同的情况使用不同的配置来测试应用。
- 用于多实例,如果你需要运行同一个应用的不同版本的话。当然你可以在服务器上 使用不同配置运行多个相同应用,但是如果使用应用工厂,那么你可以只使用一个 应用进程而得到多个应用实例,这样更容易操控。
app/settings.py
class Config(object):
# 配置项在flask文档中已经规定好
DEBUG = True
app/__init__.py
from flask import Flask
from .settings import Config
def create_app():
# 1. 创建app对象
app = Flask(__name__)
# 2. 导入配置类
app.config.from_object(Config)
# 3. 返回 flask对象
return app
主模块
main.py
# 1. 导入工厂函数
from app import create_app
# 2. 生成APP
app = create_app()
@app.route('/')
def hello():
return "hello Flask"
if __name__ == '__main__':
# 3. 启动flask服务
app.run(host='0.0.0.0', port=7000, debug=True)
flask项目
- 创建app包(可视为django项目中的项目同名文件)
- settings.py:项目的配置文件
- init.py:定义工厂函数,生成flask app
- 在项目需要多个功能模块时,可以根据模块来划分创建相应的包
- init.py:创建蓝图对象,负责管理当前模块中的所有代码
- models.py: 用来创建模型类,命名习惯使然,可自行命名
- views.py:创建视图,命名同上
- 每个蓝图完成后,需要在app中注册app,类似django中的注册app
1.创建配置文件settings.py
class Config(object):
DEBUG = True
2.定义工厂函数,生成app
from flask import Flask
from .settings import Config
from goods import good_bp
from user import user_bp
def create_app():
'''工厂函数,专门生成app对象'''
# 1.创建app对象
app = Flask(__name__)
# 2.导入配置类
app.config.from_object(Config)
# 3.返回flask对象
return app
3.创建蓝图,在子模快的__init__.py文件中
from flask import blueprints
from .views import *
# 当项目中功能过于复杂,按照功能进行拆分为子应用,flask称为蓝图
good_bp = blueprints.Blueprint('goods',__name__)
# 调用app的add_url_rule方法配置路由
good_bp.add_url_rule('/goods',view_func=index)
4.创建视图,在子模块的views.py文件中
def index():
return '商品列表'
5.在app中的__init__.py 文件中注册蓝图
from flask import Flask
from .settings import Config
from goods import good_bp
from user import user_bp
def create_app():
'''工厂函数,专门生成app对象'''
# 1.创建app对象
app = Flask(__name__)
# 2.导入配置类
app.config.from_object(Config)
app.register_blueprint(good_bp)
app.register_blueprint(user_bp)
# 3.返回flask对象
return app
6.在顶级目录中的main.py文件中
# 1.导入工厂函数
from app import create_app
# 2.生成app
app = create_app()
if __name__ == '__main__':
# 3.启动flask服务
app.run()

浙公网安备 33010602011771号