学习目标:flask_工程化一个项目目录
经历差不多2周学习的终于敲出一个demo!!!引言:
- 本文主要内容是如何搭建一个类似于MVC思想web项目目录结构demo,当然暂时M(模型)C(控制)还没有完美抽离出来。
- 本demo采用REST-API风格,只专注于后端逻辑
学前必备:
- 能理解单文件flaskWEB框架的每一行代码。
- 例如:安装好flask后,运行下面代码 访问 http://127.0.0.1:5000 根目录。
from flask import Flask
app = Flask(__name__) #Flask构建用函数用当前模块(__name__)的名称作为参数
@app.route('/') #我的理解为路由修饰器
def hello_world():
return 'Hello World'
#if语句表示:保证在执行到这个目标时,web开发服务器才会启动
if __name__ == '__main__':
app.run()
- 认识flask,了解Flask是基于Werkzeug 、WSGI工具包和Jinja2
- WSGI:Web Server Gateway Interface ;web服务器网关接口:Python Web应用程序开发的标准。 WSGI是Web服务器和Web应用程序之间通用接口的规范。
- Werkzeug:一个WSGI的工具包,实现请求响应对象和使用函数。这使得能够在其上构建web框架。 Flask框架使用Werkzeug作为其基础之一
- 当然本demo不关注前端因此不关注jinjia2。
- 安装python环境然后记得创建虚拟环境,来保持日后的多个项目因版本而引起的不必要的麻烦。
先看一下我的demo项目目录结构:
之前用过egg开发后端因此在使用Flask时思想没有进步,仍停留在egg结构的思想下,当然Flask非常灵活,若爱能充分满足满足你的开发习惯。
我的目录:
- PyFly 目录是我的项目总目录。
- api目录是我的 API 接口业务逻辑、配置、拓展插件等总目录。
- api下 controllers 目录是我的业务逻辑接口目录,用于接受处理请求。
- api 下 config.py 是我的配置文件,存放环境配置参数。
- api 下 extensions.py 是我的可拓展插件存放的位置。
- api 下 init.py 是存放初始化模板全局函数。
- PyFly 下 myenv 目录是本项目的虚拟环境目录。
- PyFly 下 manager.py 初始化配置,拓展插件和 通过工厂函数初始化Flaskweb。
从0到1建设工程目录结构
代码知识点请看我的其他文章。
创建 PyFly 目录作为工作目录,并创建虚拟环境(百度如何创建虚拟环境)。
建立 api 目录 并在 api 目录下创建controllers目录和__init__.py(魔法方法)文件。


创建 controllers 目录下的 book.py 和user.py文件。
book.py



user.py



controllers下的 init.py 使用蓝图将controllers目录封装成一个模块。

在 controllers 下创建 config.py 配置文件

在 controllers 下创建 extensions.py 文件存放拓展插件

7.最后在 PyFly 目录下创建管理启功文件manager.py
其他知识:
请求响应循环:
请求上下文
程序想要访问一些对象(自定义程序对象,或者请求对象),如何做呢?
这些变量可以通过上下文的方式来定义。
- current_app:程序上下文,当激活程序的程序实例。
- g:程序上下文,处理请求时,用于临时存储的对象。每次请求都会重设这个变量。
- request:请求上下文,封装客户端发出的HTTP请求中的内容。
- session:请求上下文,用于存储请求之间需要“记住”的值的字典。
生命周期:程序上下文、请求上下文都是子啊处理完成后被删除。
程序上下文,就是在被推送后可以被使用,
版权声明:本文为fox584832636原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。