Flask

环境配置

为了防止 django和 flask环境相互冲突,可以使用 虚拟环境分割开

pip install virtualenv virtualenvwrapper-win  # 安装虚拟环境基本的依赖包

mkvirtualenv flask  # 创建一个叫 flask的虚拟环境
deactivate  # 退出当前虚拟环境
rmvirtualenv flask  # 删除名叫 flask的虚拟环境


workon flask  # 进入虚拟环境flask
pip install -r requirements.txt  # 在虚拟环境中安装flask必备的包

基本流程

配置项可以参考 官方 文档

  • 创建flaskAPP

  • 定义视图函数

  • 对视图函数配置路由

    • 使用装饰器,配置路由

    • 调用app的方法 add_url_rule 对视图函数配置路由

  • 直接运行APP

from flask import Flask

# __name__ 当前 文件的名字
# __file__ 当前 文件的路径
# 1. 创建flask的app
app = Flask(__name__)


# 2.1 创建视图函数,利用装饰器可以配置路由
@app.route('/')
def hello():
   return "hello Flask"


# 2.2.1 创建视图函数
def two():
   return 'two page'

# 2.2.2 利用app的方法对视图函数添加路由
app.add_url_rule('/two', view_func=two)


if __name__ == '__main__':
   # 3. 运行APP
   app.run()

项目配置

配置文件

通过专门的配置文件,读取配置项,适用于配置项较多

settings.py

class Config(object):
   DEBUG = True

主模块

import os
from flask import Flask
from settings import Config

app = Flask(__name__)

# app.config.from_object('settings.Config')
app.config.from_object(Config)


@app.route('/')
def hello():
   return "hello Flask"


if __name__ == '__main__':
   app.run()

工厂模式

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

那么这样做有什么用呢?

  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包

    • settings.py: 项目 的配置文件

    • __init__.py: 定义工厂函数,生成 flask app

  • 如果项目功能模块很多,可以按照模块划分,例如: 商品模块, 创建 goods

    • __init__.py: 创建蓝图对象, 负责管理当前模块中的所有代码

    • models.py: 实现 商品模块中的 所有 商品模型类

    • views.py: 实现 商品模块中的所有视图

    • 每个蓝图 代码搞定之后,需要在 主app中 注册 app, 类似于 django 的注册 app

 

 

 

 

 

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐