当前位置:
首页 >
Flask笔记-构建mvc分层结构及优化
发布时间:2025/3/15
29
豆豆
生活随笔
收集整理的这篇文章主要介绍了
Flask笔记-构建mvc分层结构及优化
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
大体上的结构如下:
这里举个例子:
程序运行截图如下:
打印个
文件结构如下:
源码如下:
account.py
from application import dbclass Account(db.Model):id = db.Column(db.Integer, primary_key = True)name = db.Column(db.String(50))password = db.Column(db.String(50))user.py
# coding: utf-8 from application import dbclass User(db.Model):__tablename__ = 'user'Host = db.Column(db.String(60, 'utf8_bin'), primary_key=True, nullable=False, server_default=db.FetchedValue())User = db.Column(db.String(32, 'utf8_bin'), primary_key=True, nullable=False, server_default=db.FetchedValue())password_last_changed = db.Column(db.DateTime)password_lifetime = db.Column(db.SmallInteger)base_setting.py
#公用配置 DEBUG = True SQLALCHEMY_ECHO = False SQLALCHEMY_TRACK_MODIFICATIONS = False SQLALCHEMY_ENCODING = "utf8mb4" SECRET_KEY = "it1995123456"local_setting.py
#本地开发配置文件 from config.base_setting import * #这样的话就可以覆盖配置了 SQLALCHEMY_TRACK_MODIFICATIONS = True SQLALCHEMY_DATABASE_URI = "mysql://root:XXXXXXXXXX@XXX.XXX.XXX.XXX/mytest" SECRET_KEY = "12345IT1995"production_setting.py
#生产环境配置文件 from config.base_setting import * DEBUG = Falseindex.py
from flask import Blueprint,render_template from common.models.user import User from common.models.account import Account index_page = Blueprint( "index_page",__name__ )@index_page.route("/") def index():context = {}#result = User.query.all()result = Account.query.all()context['result'] = resultreturn render_template("index.html", **context)Auth.py
from application import app@app.before_request def before_request():app.logger.info("----------before_request----------")return@app.after_request def after_request(response):app.logger.info("----------after_request----------")return responseerrorHandler.py
from application import app@app.errorhandler(404) def error_404(e):return "404 not found"layout.html
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>模版</title> </head> <body> {% block content %} {% endblock %} </body> </html>index.html
{% extends "common/layout.html" %} {% block content %} <p> flask 查询数据库</p> <p>{% for item in result %}{{ item['id'] }} {{ item['name'] }} {{ item['password'] }}{% endfor %} </p> {% endblock %}application.py
from flask import Flask from flask_script import Manager from flask_sqlalchemy import SQLAlchemy import osapp = Flask(__name__) manager = Manager(app)app.config.from_pyfile("config/base_setting.py") #ops_config=local|production #linux export ops_config=local|production #windows set ops_config=local|productionif "ops_config" in os.environ:app.config.from_pyfile("config/%s_setting.py" % (os.environ['ops_config']))db = SQLAlchemy(app)manager.py
from application import app,manager from flask_script import Server,Command from www import *#web server manager.add_command("runserver", Server(host = "0.0.0.0", use_debugger = True, use_reloader = True ))#create_table @Command def create_all():from application import dbfrom common.models.user import Userdb.create_all()manager.add_command( "create_all",create_all )def main():manager.run()if __name__ == "__main__":try:import syssys.exit(main())except Exception as e:import tracebacktraceback.print_exc()requirement.txt
flask flask-sqlalchemy mysqlclient flask-script flask_debugtoolbarwww.py
from application import app from controllers.index import index_page from flask_debugtoolbar import DebugToolbarExtensiontoolbar = DebugToolbarExtension(app)#拦截器和错误处理 from interceptors.Auth import * from interceptors.errorHandler import *app.register_blueprint(index_page, url_prefix = "/")这样的话就不可以用python manager.py来跑了。
从中可以看到。
create_all,就可以创建表了!
runserver是可以跑起来的,所以要这么跑
python manager.py runserver
总结
以上是生活随笔为你收集整理的Flask笔记-构建mvc分层结构及优化的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 使用Spring Boot搭建Hello
- 下一篇: C++设计模式-装饰模式