初识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)

工厂模式

如果在一个函数中 创建对象,那么就可以创建多个实例。

那么这样做有什么用呢?

  1. 用于测试。可以针对不同的情况使用不同的配置来测试应用。
  2. 用于多实例,如果你需要运行同一个应用的不同版本的话。当然你可以在服务器上 使用不同配置运行多个相同应用,但是如果使用应用工厂,那么你可以只使用一个 应用进程而得到多个应用实例,这样更容易操控。

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()
posted @ 2021-05-31 11:42  秦风-无衣  阅读(45)  评论(0)    收藏  举报