在工作中,我们不可能将ORM的配置,ORM的操作,ORM的使用以及视图放到同一个文件里,大多数时候Flask都是按照MVC的设计理念进行部署的

1、MVC和MTV

(1)MVC(Model-View-Controller,模型-视图-控制器)

  MVC是一种web架构的模式

  特点:把业务逻辑、模型数据、用户界面分离开来,让开发者将数据和表现解耦

  Model:代表数据存取层

  View:代表的是系统中选择显示什么和怎么显示的部分

  Controller:指的是系统中根据用户输入及视需要访问模型,以决定使用哪个视图的哪部分

(2)MTV(Model-Templates-View,模型-模板-视图)

  Model:数据存取层。该层处理与数据相关的所有事物,包括数据如何存取,如何验证有效,是一个抽象层。用来构建和操作你的web应用中的数据,模型是你的数据的唯一的、权威的信息源。它包含你所存取数据的必要字段和行为。通常,每个模型对应你数据库中唯一的一张表

  Templates:表现层。该层处理与表现相关的决定,比如如何在页面和其他页面文档上进行显示。该层提供了设计友好的语法来展示信息给用户。使用模板方法可以动态的生成HTML。模板包含所需HTML输出的静态部分,以及一些特殊的语法,描述如何将动态内容插入

  Views:业务逻辑层。该层包含存取模型及调取恰当模板的相关逻辑,用于封装负责处理用户请求及返回响应的逻辑。视图可以看做是前端以及数据库的中间人,它会将用户想要的信息从数据库里读取出来给前端,它也会将用户想保存的数据存储到数据库

2、Flask项目文件的拆分——头文件main.py

  头文件main.py负责生成应用,加载数据库配置

import os
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import pymysql pymysql.install_as_MySQLdb() # 创建一个应用
app = Flask(__name__) BASE_DIR = os.path.abspath(os.path.dirname(__file__)) # 链接数据库
app.config["SQLALCHEMY_DATABASE_URI"] = "mysql+mysqlconnector://root:123456@localhost/flaskdb"
# 请求结束之后自动提交
app.config["SQLALCHEMY_COMMIT_ON_TEARDOWN"] = True
# 跟踪修改
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True models = SQLAlchemy(app)

3、Flask项目文件的拆分——模型文件models.py

  模型文件models.py用于数据库的建模,数据表的生成等

from main import models

class BaseModel(models.Model):
__abstract__ = True # 声明当前类为抽象类,被继承调用不被创建
id = models.Column(models.Integer, primary_key=True, autoincrement=True) def save(self):
db = models.session()
db.add(self)
db.commit() def delete(self):
db = models.session()
db.delete(self)
db.commit() class Test(BaseModel):
__tablename__ = "test"
id = models.Column(models.Integer, primary_key=True)
name = models.Column(models.String(32))
time = models.Column(models.Date)

4、Flask项目文件的拆分——总控制文件manage.py

import sys
from models import models
from views import app # 获取当前文件名后所跟命令名字
command = sys.argv[1] if command == "migrate":
models.create_all() if command == "runserver":
app.run(host="127.0.0.1", port=, debug=True)

5、Flask项目文件的拆分——视图文件views.py

  视图文件views.py用于存放视图函数

from main import app
from flask import render_template @app.route("/index/", methods=["GET", "POST"])
def index():
return render_template("index.html", **locals())

6、Flask配置文件settings.py

(1)第一种写法

main.py

# 链接数据库
app.config["SQLALCHEMY_DATABASE_URI"] = "mysql+mysqlconnector://root:123456@localhost/flaskdb"
# 请求结束之后自动提交
app.config["SQLALCHEMY_COMMIT_ON_TEARDOWN"] = True
# 跟踪修改
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True

  比较直观,适合小型项目

(2)第二种写法

  编写配置文件settings.py

import os

BASE_DIR = os.path.abspath(os.path.dirname(__file__))

SQLALCHEMY_DATABASE_URI = "mysql+mysqlconnector://root:123456@localhost/flaskdb"
SQLALCHEMY_COMMIT_ON_TEARDOWN = True
SQLALCHEMY_TRACK_MODIFICATIONS = True DEBUG = True

  使用配置文件

main.py

app = Flask(__name__)
app.config.from_pyfile("settings.py")

(3)第三种写法

  使用类对象

settings.py

import os

BASE_DIR = os.path.abspath(os.path.dirname(__file__))

class Config:
SQLALCHEMY_DATABASE_URI = "mysql+mysqlconnector://root:123456@localhost/flaskdb"
SQLALCHEMY_COMMIT_ON_TEARDOWN = True
SQLALCHEMY_TRACK_MODIFICATIONS = True
DEBUG = True class RunConfig(Config):
DEBUG = False

  使用配置

main.py

app.config.from_object("settings.Config")

最新文章

  1. WinFrom窗体始终置顶
  2. 视频聊天APP
  3. Retrofit 2.0使用
  4. 统计《ASP.Net特供视频教程》总长度
  5. sql语句查询数据库表结构信息
  6. codeforces.com/problemset/problem/213/C
  7. 【Apache运维基础(3)】虚拟主机配置说明
  8. PHP header 的几种用法
  9. 绘制数据图表的又一利器:C3.js
  10. iOS指纹识别
  11. 修改AspNetSqlMembershipProvider的密码规则
  12. [LeetCode]题解(python):126-Word Ladder II
  13. linux下常见问题
  14. C++第二篇--访问控制
  15. lglob-lua 静态检查脚本
  16. [Luogu P1144]最短路计数
  17. Kali学习笔记3:TCPDUMP详细使用方法
  18. JS 数组中对象去重 reduce 用法
  19. eclipse使用struts2找不到action方法或找不到action的错误记录
  20. WEB测试用例设计总结

热门文章

  1. linux查看cpu核数和内存指令
  2. Centeos7搭建selenium+Chrome浏览器
  3. 洛谷:P3950 部落冲突
  4. Spring Boot 2.x 基础案例:整合Dubbo 2.7.3+Nacos1.1.3(最新版)
  5. 阿里云DLA工具 查询tablestore数据
  6. 超大规模商用 K8s 场景下,阿里巴巴如何动态解决容器资源的按需分配问题?
  7. B-概率论-条件概率
  8. 想转行做程序员,目前想学WEB前端,想问该自学还是报培训班
  9. [JZOJ4737] 【NOIP2016提高A组模拟8.25】金色丝线将瞬间一分为二
  10. [Luogu1313][NOIP2011提高组]计算系数