发布时间:2019/02/09 22:29:10   更新时间:2020/07/31 19:52:05
flask框架并没有给出项目结构。只是《Flask Web开发》中的第七章“大型程序的结构”中,建议了一个代码结构。取其精髓,核心的部分,就是如下这样子的:
sdk:云上的一些sdk包。
env:virtualenv产生的env。
main:主代码程序
- Config.py:环境配置全局变量。
- Mangage.py:启动程序。
- app :一个应用app文件夹。
- Common.py:公共函数。
- Decorator.py:装饰器。
- Init.py:app的初始化函数。
- Models.py:数据模型。
- __init__.py:app的模块初始化文件。用来写app的工厂函数。
-
- api:restful接口文件夹。
- - Errors.py:错误返回api的接口。
- - Resource.py:api的资源(api数据产生的处理函数)。
- - Route.py:api的路由。
- - __init__.py
-
- page:后端推送html文件夹。
- - Errors.py:错误页面推送。
- - Route.py:后端推送的路由。
- - Views.py:后端推送的视图函数。
- - __init__.py
-
- static:前端静态文件夹。
- - css
- - - xxx.css
- - - img
- - - xxx.png
- - - js
- - - xxx.js
- templates:html模板文件夹。
- - Error_404.html
- - Index.html
- - Login.html
后边本文的讲解,会用到这个目录里的文件名。
class Config:
@staticmethod
def init_app(app):
global global_app
#储存一下全局app。
global_app = app
return 0
class DevelopmentConfig(Config):
#DevelopmentConfig环境的flask默认打印级别是debug。
#这个调试模式,可以让程序变更自动加载,并在错误时提供调试模式,但是有巨大安全隐患,产品模式不可用。
#debug模式,会启动两次初始化代码。会在文件更新时自动重启,会在页面返回比较漂亮的错误打印。
DEBUG = True
SECRET_KEY = app_name + "_secret_key"
#restful使用的配置。
RESTFUL_JSON = {"ensure_ascii": False, "encoding": "utf-8"}
#文件上传使用的配置。
UPLOADS_DEFAULT_DEST = load_dir
UPLOADS_DEFAULT_ALLOW = DATA
#数据库使用的配置。
SQLALCHEMY_DATABASE_URI = "mysql://" + app_name + ":" + app_name + "@localhost/" + app_name
SQLALCHEMY_COMMIT_ON_TEARDOWN = True
SQLALCHEMY_TRACK_MODIFICATIONS = True
#环境类通用全局变量
config = \
{
"development": DevelopmentConfig,
"testing": TestingConfig,
"production": ProductionConfig,
"default": DevelopmentConfig
}
#注意,导入一个包的时候,首先自动执行里边的__init__.py文件,它是包初始化文件。
from app import creat_app
from app import socketio
from Config import app_ip
from Config import app_port
#用工厂函数创建app
app = creat_app("default")
if __name__ == "__main__":
#flask自带web服务器
#app_run(host = "0.0.0.0", port=1125, threaded=True)
#app_run(host = "0.0.0.0", port=1125, processes=3)
#加入socketio的启动。
socketio.run(app, host=app_ip, port=app_port)