欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

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 = False

index.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 response

errorHandler.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_debugtoolbar

www.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分层结构及优化的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。