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分层结构及优化相关推荐
- MVC模式,分层结构
优化部分 如果有些取得的数值出现乱码,使用URLEncode.encode("UTF-8")修改编码 resp.sendRedirect("login?msg=" ...
- 第一章 计算机网络 5 分层结构/协议/接口/服务的概念 [计算机网络笔记]
第一章 计算机网络 5 分层结构/协议/接口/服务的概念 本笔记参考书目: 计算机网络(第8版)谢希仁 2021王道计算机网络视频公开课 本节重点: 分层结构/协议/接口/服务 实体/对等实体 PCI ...
- JEE项目分层结构与MVC
JEE项目分层结构与MVC 一.JEE项目的安排 二.JEE项目功能 三.JEE项目在编程软件中的呈现 四.JEE项目的分层结构 五.三层结构 1.为什么需要 2.三层结构是什么 3.三层结构的传递与 ...
- 《Go语言圣经》学习笔记 第二章 程序结构
Go语言圣经学习笔记 第二章 程序结构 目录 命名 声明 变量 赋值 类型 包和文件 作用域 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. Go语言小白学习笔记,几乎是书上的内 ...
- Android群英传笔记——第十章:Android性能优化
Android群英传笔记--第十章:Android性能优化 随着Android应用增多,功能越来越复杂,布局也越来越丰富了,而这些也成为了阻碍一个应用流畅运行,因此,对复杂的功能进行性能优化是创造高质 ...
- 深入理解MVC分层模式
MVC分层模式: M 即Model(模型层),主要负责出来业务逻辑以及数据库的交互 V 即View(视图层),主要用于显示数据和提交数据 C 即Controller(控制器),主要是用 ...
- flask url构建_如何为生产构建构建Flask-RESTPlus Web服务
flask url构建 by Greg Obinna 由格雷格·奥比纳(Greg Obinna) 如何为生产构建构建Flask-RESTPlus Web服务 (How to structure a F ...
- 镜像的分层结构 - 每天5分钟玩转容器技术(11)
Docker 支持通过扩展现有镜像,创建新的镜像. 实际上,Docker Hub 中 99% 的镜像都是通过在 base 镜像中安装和配置需要的软件构建出来的.比如我们现在构建一个新的镜像,Docke ...
- 容器学习 之 镜像的分层结构(六)
镜像的分层结构 Docker Hub 中 99% 的镜像都是通过在 base 镜像中安装和配置需要的软件构建出来的.比如我们现在构建一个新的镜像,Dockerfile 如下: 新镜像不再是从 scra ...
最新文章
- 【杠精】切屏屏蔽和复制,怎么办--有方法解除移动切屏和复制网大限制
- 敏捷团队迭代交付能力计算模型
- 【REACT NATIVE 系列教程之四】刷新组件RENDER(重新渲染)的三种方式详解
- 我眼中未来的计算机作文600字,我的电脑作文600字
- shapefile导入oracle,shp2sdo.exe用法:shpfile导入OracleSpatial
- MATLAB矩阵添加新元素
- C++ - extern C用法浅析
- 蓝桥杯 基础练习 2n皇后问题(从n皇后问题入手)
- html表单的课后心得体会,web前端学习心得体会范文
- redis--服务器与客户端
- 51nod1174--区间中最大的数--线段树
- CGLIB实现AOP,MethodInterceptor接口和Enhancer详解——Spring AOP(四)
- 【21】基于java的旅游信息管理系统
- 《人工智能及其应用》重点回顾
- UWP 写入图片 Exif 信息
- “爱心助农”成绩单公布,淘宝何以成为最大舞台?
- idea查看代码行数Statistic
- [luogu]P1852跳跳棋
- 网络基础知识:10M、50M、100M宽带下载速率一般是多少?—Vecloud微云
- [presto(trino)]多种日期写法
热门文章
- 一些总是记不住又容易搞混淆的东西(不断更新)
- 打开网页出现“安全沙箱冲突”的提示
- C/C++工程师需要掌握哪些技能?他们的工资这么高,是有原因的!
- 看完这篇你就明白,为什么说大部分企业建设数据中台都会失败?
- Python入门:Anaconda和Pycharm的安装和配置
- 汉游天下公司的一些感悟
- CSS裸奔节,一个被遗忘的前端节日!
- 女程序员,说多了都是泪!
- cad图纸问号怎么转换文字_CAD打开图纸后字体显示为问号,这样解决治标治本(送)...
- python必备神器_Python 必备神器