文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Django新手必看:如何创建应用和定义数据表。(详细讲解)

2023-08-31 21:01

关注

Django新手必看:如何创建应用和定义数据表。

🏘️🏘️个人简介:以山河作礼
🎖️🎖️:Python领域新星创作者,CSDN实力新星认证,阿里云社区专家博主
🎁🎁:Web全栈开发专栏:《Web全栈开发》免费专栏,欢迎阅读!
🎁🎁:文章末尾扫描二维码可以加入粉丝交流群,不定期免费送书。


1. Django创建应用

1.1 创建应用

Django 的设计目标是让开发者关注应用的功能逻辑的实现。

所以,创建应用的过程是非常简单的,利用 manage.py 提供的 startapp 命令就可以创建一个APP。

具体命令如下所示:
语法:

python manage.py startapp 应用名

python manage.py startapp index

执行这个命令不会在命令行看到任何输出,但是可以在 manage.py 的同级目录下看到多出了一个 index 目录:

在这里插入图片描述

我们对这些文件做逐一的解释:

这就是 index
应用涉及到的所有文件,当然在实际的开发工作中,该应用目录下的文件也不是一成不变的,开发者根据自己的需要会相应的增加文件或者子目录,比如
urls.py 文件或者存储静态文件的 static 目录等。所以大家千万不要认为 Django
框架自动生成的目录,无需我们做其他操作或者更改,这是使用 Django 的一个误区。

1.2 应用的添加

应用创建完成后,我们还需要在 settings.py 配置文件中对其进行添加。

我们已经对 INSTALLED_APPS 做了介绍,把我们创建的应用添加到这个列表,如下所示:

INSTALLED_APPS = [    'django.contrib.admin',    'django.contrib.auth',    'django.contrib.contenttypes',    'django.contrib.sessions',    'django.contrib.messages',    'django.contrib.staticfiles',    'index',]

2. Django ORM

在这里插入图片描述

2.1 定义数据表

在定义数据表之前,我们应该首先理解什么是模型类。

通过以上代码,UserInfo 数据表就已经创建完成,我们对代码进行逐行解析:

2.2 定义项目数据表

下面我们用 ORM 定义 index 应用所需的数据表,首选找到 index 应用下的 models.py 文件。

在文件里添加如下代码:

from django.db import models# Create your models here.# 创建book表class Book(models.Model):    title = models.CharField(max_length=30, unique=True, verbose_name='书名')    public = models.CharField(max_length=50, verbose_name='出版社')    price = models.DecimalField(max_digits=7, decimal_places=2, verbose_name='定价')    retail_price = models.DecimalField(max_digits=7, decimal_places=2, verbose_name='零售价', default="30")# 创建作者表class Author(models.Model):      name = models.CharField(max_length=30, verbose_name='姓名')    email = models.EmailField(verbose_name='邮箱')# 创建用户信息表class UserInfo(models.Model):     username = models.CharField(max_length=24, verbose_name='用户注册')    password = models.CharField(max_length=24, verbose_name='密码')

为什么表中没有设置主键呢,当定义一个模型类时,Django会自动创建一个主键字段,该字段名为id,类型为AutoField,其自增长。

也可以手动创建

id = models.AutoField(primary_key=True) # id 会自动创建,可以手动写入

2.3 通用字段选项

Model 中添加的字段都是 Field 类型的实例,不同的 Field 类型可能会支持不同的字段选项,但是也有很多字段选项是通用的,即可以用在任何一种 Field 类型中。这里介绍一些常用且重要的通用字段选项,它们都有对应的默认值,这些字段选项都是可选的,理解这些有助于更好地使用它们。

2.4 外键使用

有一个数据表,就应该对应一个模型 在models.py中定义模型

引入:from django.db import models

模型类要继承models.Model类

from django.db import models# Create your models here.class Grades(models.Model):    """班级表"""    gname = models.CharField(max_length=20)  # 班级名称    gdate = models.DateTimeField()  # date    gtotal = models.IntegerField()  # totalclass Students(models.Model):    """学生表"""    sname = models.CharField(max_length=20)  # name    sgender = models.BooleanField(default=True)  # gender    sage = models.IntegerField()  # age    # 关联外键    sgrade = models.ForeignKey(Grades,models.DO_NOTHING)
on_delete=None,  # 删除关联表中的数据时,当前表与其关联的field的行为on_delete=models.CASCADE,     # 删除关联数据,与之关联也删除on_delete=models.DO_NOTHING,  # 删除关联数据,什么也不做on_delete=models.PROTECT,     # 删除关联数据,引发错误ProtectedError\# models.ForeignKey('关联表', on_delete=models.SET_NULL, blank=True, null=True)on_delete=models.SET_NULL,  # 删除关联数据,与之关联的值设置为null(前提FK字段需要设置为可空,一对一同理)\# models.ForeignKey('关联表', on_delete=models.SET_DEFAULT, default='默认值')on_delete=models.SET_DEFAULT, # 删除关联数据,与之关联的值设置为默认值(前提FK字段需要设置默认值,一对一同理)

2.5 应用数据库迁移

上面我们创建好了 index应用所需的数据表,下一步就是执行数据库的迁移,之后让我们再来看一下又有什么新的变化发生呢?数据库迁移的两个命令分步骤执行,

如下所示:

$ python manage.py makemigrations$ python manage.py migrate

执行完毕后会在命令行得到如下输出:
在这里插入图片描述

在这里插入图片描述

若迁移过程中出现报错提示,首先检查您的 models.py 文件是否正确书写,除此之外,也可能由于 Django 与 MySQL 版本问题导致报错。

而且在 index 应用下的 migrations 目录下生还成了一个 0001_initial.py 的文件:

在这里插入图片描述

这个迁移文件包含了创建数据表时用到的所有信息,这是一个临时的过度文件。

makemigrationsmigrate 是 Django 中的两个命令,用于数据库迁移和同步模型。

makemigrations 命令会基于你的 Django应用中的模型定义,生成一组迁移文件,这些文件描述如何在数据库中创建或修改表结构。在执行 makemigrations命令时,Django 会比较当前模型定义与最近一次迁移所定义的模型之间的差异,并生成一系列 SQL 命令来执行这些更改。

示例命令:

$ python manage.py makemigrations

migrate 命令用于应用迁移,它会将迁移文件中定义的更改应用到数据库中。执行 migrate 命令时,Django会检查其中的每个迁移,执行其中定义的 SQL 命令,并将这些更改反映到数据库模式中。如果执行成功,你的 Django应用的数据模型就和数据库之间保持同步了。

示例命令:

$ python manage.py migrate

总之,makemigrations 命令会生成迁移文件,描述如何在数据库中创建或修改表结构,而 migrate命令会将这些迁移文件应用到数据库中,使数据模型保持和数据库之间的同步。这两个命令通常会在 Django开发过程中被频繁使用,需要对数据库进行修改,增加和删除操作。

              ⭐感谢赞助⭐

在这里插入图片描述
618,清华社 IT BOOK 多得图书活动开始啦!活动时间为2023年6月7日至6月18日,清华社为您精选多款高分好书,涵盖了C++、Java、Python、前端、后端、数据库、算法与机器学习等多个IT开发领域,适合不同层次的读者。全场5折,扫码领券更有优惠哦!快来京东点击链接IT BOOK多得https://pro.m.jd.com/mall/active/3Rho97HkMaGFycLzAWfFdvZdyvRn/index.html

来源地址:https://blog.csdn.net/weixin_50804299/article/details/131138876

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯