MTV

我们或许都听说过MVC模式。MVC是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码。Django也有其设计模式,我们称之为MTV。

  • M 代表模型(Model) , 即数据存取层。 该层处理与数据相关的所有事务
  • T 代表模板(Template), 即表现层。 比如HTML
  • V 代表视图(View) , 即业务逻辑层。 我们编写业务代码的地方。

Django模型

在运行我们第一个项目的时候,并没有涉及数据库的操作,如果我们想创建一张表,那么如何操作呢?我们可以在article/models.py下面进行操作。可能有的同学会说,models.py不是一个python文件吗?跟数据库有什么关系,因为Django的特殊性,所以我们可以使用对象关系映射(ORM,Object Relational Mapping),简单的说就是用操作类的形式操作数据库,那么怎么操作呢?我们依旧使用blog进行举例,假设blog有一张表,有标题、作者、文章内容、发布时间组成,那么我们如何在Django下面生成一张数据表呢?我们打开article/models.py文件,输入如下代码:

from django.db import models

# Create your models here.
class Article(models.Model):
title = models.CharField(max_length=10, ) # 标题
author = models.CharField(max_length=10) # 作者
content = models.CharField(max_length=500) # 内容

我们创建一个Article类,继承models.Model,定义四个字段:title、 author、 content date_publish,CharField、DateTimeField是字段的类型,除了这两种,Django还有很多其它数据类型, 如下表:

类型 描述
AutoField 用于存放 integer 类型的数字。
BooleanField 用于存放布尔类型的数据(Ture 或 False)
CharField 用于存放字符型的数据, 需要指定长度 max_length。
CommaSeparatedIntegerField 用于存放用逗号隔开的 integer 类型的数据。
DateField 日期型, 必须是“YYYY-MM-DD” 格式
DateTimeField 日期时间型, 必须是"YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] "格式。
DecimalField 小数型, 用于存放小数的数字。
EmailField 电子邮件类型
FilePathField 文件路径类类型, FilePathFields must have either 'allow_files' or 'allow_folders set to True.
FloatField 浮点型。 用于存放浮点型数据。
IntegerField 用于存放 integer 类型的数字。
BigIntegerField 用于存放大 integer 类型的数字, 最大数支持: 9223372036854775807
GenericIPAddressField 存放 IP 地址的类型, IPv4 和 IPv6 地址, 字符串格式。
NullBooleanField vlaue must be either None, True or False.
PositiveIntegerField Positive integer
PositiveSmallIntegerField Positive small integer
SlugField 需要定义 max_length 值。
SmallIntegerField Small integer
TextField 用于存放文本类型的数据。
TimeField 时间类型。 "HH:MM[:ss[.uuuuuu]]" 格式
URLField 用于存放 URL 地址
BinaryField Raw binary data

但现在article还只是一个类,不是一张表,所以我们要执行下面2个命令,执行数据库迁移

F:\新建文件夹\blog>python manage.py makemigrations article
Migrations for 'article':
article\migrations\0001_initial.py
- Create model Article F:\新建文件夹\blog>python manage.py migrate
Operations to perform:
Apply all migrations: admin, article, auth, contenttypes, sessions
Running migrations:
No migrations to apply.

python manage.py makemigrations article相当于 在该app下建立 migrations目录,并记录下你所有的关于modes.py的改动,比如0001_initial.py, 但是这个改动还没有作用到数据库文件

python manage.py migrate将该改动作用到数据库文件,比如产生table之类。

14. Django MTV及Django模型的更多相关文章

  1. 初识DJango——MTV模型

    一.Django—MTV模型 Django的MTV分别代表: Model(模型):负责业务对象与数据库的对象(ORM) Template(模版):负责如何把页面展示给用户 View(视图):负责业务逻 ...

  2. web 框架的本质及自定义web框架 模板渲染jinja2 mvc 和 mtv框架 Django框架的下载安装 基于Django实现的一个简单示例

    Django基础一之web框架的本质 本节目录 一 web框架的本质及自定义web框架 二 模板渲染JinJa2 三 MVC和MTV框架 四 Django的下载安装 五 基于Django实现的一个简单 ...

  3. Django框架 (七) Django ORM模型

    ORM简介 查询数据层次图解:如果操作mysql,ORM是在pymysq之上又进行了一层封装

  4. Django开发博客- 模型

    django的模型就是用于在数据库中存储的某种类型的对象.在我们的博客系统中, 发表的文章就是一个模型,需要存储在数据库中. 这里我们使用django默认的sqlite3库,对于我们的这个小系统而言已 ...

  5. django中的Model模型一:

    在django的框架设计中采用了mtv模型,即Model,template,viewer Model相对于传统的三层或者mvc框架来说就相当对数据处理层,它主要负责与数据的交互,在使用django框架 ...

  6. Django MTV

    MTV模型 Django的MTV分别代表: Model(模型):负责业务对象与数据库的对象(ORM) Template(模版):负责如何把页面展示给用户 View(视图):负责业务逻辑,并在适当的时候 ...

  7. Django MTV simple_tag filter inclusion_tag

    Django框架 模型(Model).视图(View)和控制器(Controller),具有耦合性低.重用性高.生命周期成本低等优点. MVC 框架 --  Model -View -Controll ...

  8. URLconf+MTV:Django眼中的MVC

    MVC是众所周知的模式,即:将应用程序分解成三个组成部分:model(模型),view(视图),和 controller(控制 器).其中:              M 管理应用程序的状态(通常存储 ...

  9. Django学习笔记(16)——扩展Django自带User模型,实现用户注册与登录

    一,项目题目:扩展Django自带User模型,实现用户注册与登录 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册,登录,用户认证,注销,修改密码等功能. ...

随机推荐

  1. CentOS7 防火墙Firewall常用命令

    1.firewalld的基本使用 启动: systemctl start firewalld 查看状态: systemctl status firewalld  停止: systemctl disab ...

  2. XAMPP【phpmyadmin】外网访问被拒绝解决办法

    问题场景: 在阿里云搭建一个apache服务器,正常访问XAMPP目录下的页面. 服务器本地是可以正常访问的 但是远程 就不可以访问了: 出现这样的画面: 解决方法 1.按照提示找到httpd-xam ...

  3. Ascii Chart

    Char Dec Oct Hex | Char Dec Oct Hex | Char Dec Oct Hex | Char Dec Oct Hex -------------------------- ...

  4. HTMLtr 标签的 valign 属性

    valign 属性规定表格行中内容的垂直对齐方式. <table width="100%" border="1"> <tr valign=&q ...

  5. Java数据访问对象模式

    数据访问对象模式或DAO模式用于将低级数据访问API或操作与高级业务服务分离. 以下是数据访问对象模式的参与者. 数据访问对象接口 - 此接口定义要对模型对象执行的标准操作. 数据访问对象具体类 - ...

  6. OpenCV2马拉松第9圈——再谈对照度(对照度拉伸,直方图均衡化)

    收入囊中 lookup table 对照度拉伸 直方图均衡化 葵花宝典 lookup table是什么东西呢? 举个样例,假设你想把图像颠倒一下,f[i] = 255-f[i],你会怎么做? for( ...

  7. jQuery对于demo元素的上移、下移、删除操作等实现

    今天给大家分享一个实用的jQuery技能:dom元素的操作:我们经常会去获取dom元素去实现交互效果,以及数据的操作. 首先复习一下jQuery DOM 元素方法: .get() 获得由选择器指定的D ...

  8. SpringBoot入门简介

    SpringBoot诞生的背景 所有软件行业里面,如果要说商用体系,排在第一位的永远是java,因为java的体系丰富,支持度高,安全性也高 但是我们所有的开发者也不得不去忍受Java中的以下痛苦 举 ...

  9. docker镜像仓库

    搭建私有镜像仓库 Docker Hub作为Docker默认官方公共镜像,如果想自己搭建私有镜像仓库,官方也提供registry镜像,使得搭建私有仓库非常简单. 下载registry镜像并启动 [roo ...

  10. 2019CCPC网络赛 HDU6705 - path K短路

    题意:给出n个点m条边的有向图,问图上第K短路的长度是多少(这里的路可以经过任何重复点重复边). 解法:解法参考https://blog.csdn.net/Ratina/article/details ...