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

 

 

 

 

 

 

 

 

 

相关文章

Jinja2:是Python的Web项目中被广泛应用的模板引擎,是由Pyt...
监听QQ消息并不需要我们写代码,因为市面上已经有很多开源QQ...
【Flask框架】—— 视图和URL总结
python+web+flask轻量级框架的实战小项目。登录功能,后续功...
有了这个就可以配置可信IP,关键是不需要企业认证,个人信息...