最近有一些同学问了我一些项目结构的问题 所以今天给大家专门讲解 解耦后的项目 目录我会分为两种方式:一种是普通解耦 一种是多mvc解耦
首先 我没先建立我们程序的文件夹并且在这个文件夹内写一个和这个文件夹一样的文件夹 然后再建立启动主文件manage.py
然后在内部的和主文件夹一样的文件夹内再建立一个__init__.py文件这个文件是你的生成app和app调用的所有主内容
__init__.py
from flask import Flask from config import set1 # 导入配置文件 def create_app(): app = Flask(__name__) # 导入配置文件 app.config.from_object("config.set1") #接收配置配置文件 app.logger.error(set1.dict) #导入蓝图 from biaozhun.views.comment import ac from biaozhun.views.user import user app.register_blueprint(ac) app.register_blueprint(user) return app
然后在你的manage.py文件内是你的启动文件
manage.py
from biaozhun import create_app app =create_app() if __name__ == "__main__": app.run("127.0.0.1",9980,debug = True)
其中的内部文件夹的目录是templates必须是这个名字这个存放的是你的前端界面
我们把每一个模块都放在蓝图中去实现 这个时候就用到了views,然后我没把路由分配也交给了蓝图去实现
这个里面的views的user和comment也是蓝图
user.py
from flask import Blueprint,render_template user = Blueprint("user",__name__) #生成蓝图对象 @user.route("/user_list") #使用蓝图对象来分发路由 def show_user(): return render_template("user_list.html")
comment.py
from flask import Blueprint from config import set1 # 导入配置文件 ac = Blueprint("account",__name__) @ac.route("/login") def login(): return "登陆%s"%str(set1.dict)
然后我没的config是我没的配置文件有的人也喜欢叫settings都可以的
配置文件就和以前的使用是一样的了
还有另一种的存放:
Flask做项目文件的时候也是需要注意很多的
在启动文文件的时候我没可以直接启动也可以通过命令,这个时候就需要用到一个第三方的工具包,flask_script
我没可以把实例化的app封装到flask_script中的manage中 然后 通过这个来制定启动server
application.py文件
from flask import Flask from flask_script import Manager #导入manage from flask_sqlalchemy import SQLAlchemy import os class Application(Flask): def __init__(self,import_name): super(Application,self).__init__(import_name) self.config.from_pyfile('config/base_setting.py')#导入配置文件 if "ops_config" in os.environ: # os.environ是找到你的配置文夹中对应的配置文件 self.config.from_pyfile("config/%s_setting.py"%os.environ['ops_config']) db.init_app(self) db = SQLAlchemy() app = Application(__name__) manage = Manager(app) #把app进行封装
manage.py文件
from application import app,manage from flask_script import Server #自定义启动服务命令 linux通过这个自定义 但是修改完成后就要要手动运行 python manage.py runserver才可以执行文件 import www manage.add_command("runserver",Server(host = "127.0.0.1",port = 9980,use_debugger=True)) #指定启动的服务和端口 def main(): # app.run("127.0.0.1",9980,debug=True) manage.run() if __name__ == "__main__": try: import sys sys.exit(main()) except Exception as e: import traceback #通过traceback可以把所有的错误的信息给打印出来 traceback.print_exc()
自定义启动服务命令 linux通过这个自定义 但是修改完成后就要要手动运行 python manage.py runserver才可以执行文件
如果把app封装到manage中之后再启动服务就需要执行
python manage.py runserver