zoukankan      html  css  js  c++  java
  • 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:新建文件夹log>python manage.py makemigrations article
    Migrations for 'article':
      articlemigrations001_initial.py
        - Create model Article
    
    F:新建文件夹log>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之类。

  • 相关阅读:
    2020-2021-1 20201216 《信息安全专业导论》第十周学习总结
    2020-2021-1 20201216 《信息安全专业导论》第9周学习总结
    熟悉编程语言
    2020-2021-1 20201216 《信息安全专业导论》第八周学习总结
    如何学好编程
    2020-2021第一学期20202428《计算机科学概论》第二周自习总结
    “七剑下天山”学习小组第一周学习中遇到的问题及解决
    2020-2021第一学期20202407《计算机科学概论》第一次学习总结
    开启我的测试之路
    大数据测试
  • 原文地址:https://www.cnblogs.com/suim1218/p/11009582.html
Copyright © 2011-2022 走看看