14. Django MTV及Django模型
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模型的更多相关文章
- 初识DJango——MTV模型
一.Django—MTV模型 Django的MTV分别代表: Model(模型):负责业务对象与数据库的对象(ORM) Template(模版):负责如何把页面展示给用户 View(视图):负责业务逻 ...
- web 框架的本质及自定义web框架 模板渲染jinja2 mvc 和 mtv框架 Django框架的下载安装 基于Django实现的一个简单示例
Django基础一之web框架的本质 本节目录 一 web框架的本质及自定义web框架 二 模板渲染JinJa2 三 MVC和MTV框架 四 Django的下载安装 五 基于Django实现的一个简单 ...
- Django框架 (七) Django ORM模型
ORM简介 查询数据层次图解:如果操作mysql,ORM是在pymysq之上又进行了一层封装
- Django开发博客- 模型
django的模型就是用于在数据库中存储的某种类型的对象.在我们的博客系统中, 发表的文章就是一个模型,需要存储在数据库中. 这里我们使用django默认的sqlite3库,对于我们的这个小系统而言已 ...
- django中的Model模型一:
在django的框架设计中采用了mtv模型,即Model,template,viewer Model相对于传统的三层或者mvc框架来说就相当对数据处理层,它主要负责与数据的交互,在使用django框架 ...
- Django MTV
MTV模型 Django的MTV分别代表: Model(模型):负责业务对象与数据库的对象(ORM) Template(模版):负责如何把页面展示给用户 View(视图):负责业务逻辑,并在适当的时候 ...
- Django MTV simple_tag filter inclusion_tag
Django框架 模型(Model).视图(View)和控制器(Controller),具有耦合性低.重用性高.生命周期成本低等优点. MVC 框架 -- Model -View -Controll ...
- URLconf+MTV:Django眼中的MVC
MVC是众所周知的模式,即:将应用程序分解成三个组成部分:model(模型),view(视图),和 controller(控制 器).其中: M 管理应用程序的状态(通常存储 ...
- Django学习笔记(16)——扩展Django自带User模型,实现用户注册与登录
一,项目题目:扩展Django自带User模型,实现用户注册与登录 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册,登录,用户认证,注销,修改密码等功能. ...
随机推荐
- Java原理领悟-线程池(Executor)
线程池全面解析 什么是线程池? 很简单,简单看名字就知道是装有线程的池子,我们可以把要执行的多线程交给线程池来处理,和连接池的概念一样,通过维护一定数量的线程池来达到多个线程的复用. 线程池的好处 我 ...
- spring-data-neo4j了解
本项目demo地址[请阅读readme文件]: https://gitee.com/LiuDaiHua/project-neo4j 最近项目上要搭建一个关系图谱的东西,领导给了neo4j和d3两个概念 ...
- SetViewportOrgEx和SetWindowOrgEx
在MM_TEXT映射模式下使用这两个函数. 对于 BOOL SetViewportOrgEx( HDC hdc, // 设备内容HANDLE int X, // 新Viewport的x坐标 int Y ...
- keepalive+nginx
1Nginx+keepAlived负载均衡高可用1.1Nginx+keepAlive架构图 1.1.1主机宕机 1.1.2主机恢复 1.1.3高可用环境 两台nginx,一主一备:192.168.10 ...
- Nuget--基础连接已经关闭
1.Nuget---基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系 修改一下 Package Source 改为 http://packages.nuget.org 2.Nuget- ...
- js常用扩展方法
在日常的开发过程中,经常会碰到javaScript原生对象方法不够用的情况,所以经常会对javaScript原生方法进行扩展.下面就是在实际工作时,经常使用的一些方法,做一下记录,有需要的可以拿去. ...
- 获取年月日格式为yyyy-m-d简单写法
方法:通过日期函数toLocaleString()获取.new Date().toLocaleString( ); //"2019/9/1 上午11:20:23" 获取年月日方法 ...
- ionic3配合使用docker build代码时的显示仓库配置问题
1.未配置前的报错提示: 会一直提示push失败 2.在/etc/docker目录下新建 daemon.json文件,内容为: { "insecure-registries":[& ...
- 使用extract-text-webpack-plugin处理css文件路径问题
首先看到我们的文件夹目录如下: webpack.config.js //解析分离cssconst ExtractTextPlugin = require('extract-text-webpack-p ...
- python安装pika模块rabbitmq
1.pip install pika 2.如找不到 拷贝 D:\python\testmq\venv\Lib\site-packages \pika目录