大体上的结构如下:

这里举个例子:

程序运行截图如下:

打印个

文件结构如下:

源码如下:

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分层结构及优化相关推荐

  1. MVC模式,分层结构

    优化部分 如果有些取得的数值出现乱码,使用URLEncode.encode("UTF-8")修改编码 resp.sendRedirect("login?msg=" ...

  2. 第一章 计算机网络 5 分层结构/协议/接口/服务的概念 [计算机网络笔记]

    第一章 计算机网络 5 分层结构/协议/接口/服务的概念 本笔记参考书目: 计算机网络(第8版)谢希仁 2021王道计算机网络视频公开课 本节重点: 分层结构/协议/接口/服务 实体/对等实体 PCI ...

  3. JEE项目分层结构与MVC

    JEE项目分层结构与MVC 一.JEE项目的安排 二.JEE项目功能 三.JEE项目在编程软件中的呈现 四.JEE项目的分层结构 五.三层结构 1.为什么需要 2.三层结构是什么 3.三层结构的传递与 ...

  4. 《Go语言圣经》学习笔记 第二章 程序结构

    Go语言圣经学习笔记 第二章 程序结构 目录 命名 声明 变量 赋值 类型 包和文件 作用域 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. Go语言小白学习笔记,几乎是书上的内 ...

  5. Android群英传笔记——第十章:Android性能优化

    Android群英传笔记--第十章:Android性能优化 随着Android应用增多,功能越来越复杂,布局也越来越丰富了,而这些也成为了阻碍一个应用流畅运行,因此,对复杂的功能进行性能优化是创造高质 ...

  6. 深入理解MVC分层模式

      MVC分层模式:   M 即Model(模型层),主要负责出来业务逻辑以及数据库的交互   V 即View(视图层),主要用于显示数据和提交数据   C 即Controller(控制器),主要是用 ...

  7. flask url构建_如何为生产构建构建Flask-RESTPlus Web服务

    flask url构建 by Greg Obinna 由格雷格·奥比纳(Greg Obinna) 如何为生产构建构建Flask-RESTPlus Web服务 (How to structure a F ...

  8. 镜像的分层结构 - 每天5分钟玩转容器技术(11)

    Docker 支持通过扩展现有镜像,创建新的镜像. 实际上,Docker Hub 中 99% 的镜像都是通过在 base 镜像中安装和配置需要的软件构建出来的.比如我们现在构建一个新的镜像,Docke ...

  9. 容器学习 之 镜像的分层结构(六)

    镜像的分层结构 Docker Hub 中 99% 的镜像都是通过在 base 镜像中安装和配置需要的软件构建出来的.比如我们现在构建一个新的镜像,Dockerfile 如下: 新镜像不再是从 scra ...

最新文章

  1. 【杠精】切屏屏蔽和复制,怎么办--有方法解除移动切屏和复制网大限制
  2. 敏捷团队迭代交付能力计算模型
  3. 【REACT NATIVE 系列教程之四】刷新组件RENDER(重新渲染)的三种方式详解
  4. 我眼中未来的计算机作文600字,我的电脑作文600字
  5. shapefile导入oracle,shp2sdo.exe用法:shpfile导入OracleSpatial
  6. MATLAB矩阵添加新元素
  7. C++ - extern C用法浅析
  8. 蓝桥杯 基础练习 2n皇后问题(从n皇后问题入手)
  9. html表单的课后心得体会,web前端学习心得体会范文
  10. redis--服务器与客户端
  11. 51nod1174--区间中最大的数--线段树
  12. CGLIB实现AOP,MethodInterceptor接口和Enhancer详解——Spring AOP(四)
  13. 【21】基于java的旅游信息管理系统
  14. 《人工智能及其应用》重点回顾
  15. UWP 写入图片 Exif 信息
  16. “爱心助农”成绩单公布,淘宝何以成为最大舞台?
  17. idea查看代码行数Statistic
  18. [luogu]P1852跳跳棋
  19. 网络基础知识:10M、50M、100M宽带下载速率一般是多少?—Vecloud微云
  20. [presto(trino)]多种日期写法

热门文章

  1. 一些总是记不住又容易搞混淆的东西(不断更新)
  2. 打开网页出现“安全沙箱冲突”的提示
  3. C/C++工程师需要掌握哪些技能?他们的工资这么高,是有原因的!
  4. 看完这篇你就明白,为什么说大部分企业建设数据中台都会失败?
  5. Python入门:Anaconda和Pycharm的安装和配置
  6. 汉游天下公司的一些感悟
  7. CSS裸奔节,一个被遗忘的前端节日!
  8. 女程序员,说多了都是泪!
  9. cad图纸问号怎么转换文字_CAD打开图纸后字体显示为问号,这样解决治标治本(送)...
  10. python必备神器_Python 必备神器