Django教程:ORM模型的介绍和使用
1.简介
Django模型作为ORM对象关系映射的一种形式,负责将实际数据库映射到Django应用程序的对象,并提供简单自然的API。使程序员能够轻松地查询、插入、更新和删除数据库中的数据。
上一篇文章我们简单介绍了Django的初步知识[1]。在本文中,我们将通过创建一个简单的应用程序-bbs应用程序来描述Python模型。
2。数据库配置
在开始介绍模型之前,我们最好先配置数据库。在第一个教程中生成的 Django 应用程序的项目目录中找到 poycode/setting.py 文件。首先映入眼帘的是注释:
Django settings for poycode project.
Generated by 'django-admin startproject' using Django 4.2.4.
这个文件包含了很多配置,包括授权、语言、时区等。找到DATABASES配置:
# Database
# https://docs.djangoproject.com/en/4.2/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
可以看到,默认配置的数据库是sqlite3数据库接下来是Python,如果你只是想体验Django,则无需任何操作即可使用。但当我们打算用Django开发一个新项目时,我们肯定会选择扩展性更好、性能更强的数据库。避免中途切换数据库的麻烦。
如果要使用其他数据库,请安装相关数据库绑定[2],然后更改设置文件 '默认'DATABASES
一些关键项目中的值:比如我们需要添加用户名、密码、端口等。
ENGINE选项包括常用数据库:
-'django.db .backends.sqlite3'
-'django.db .backends.postgresql'
- 'django.db.' 'django.db.backends .oracle'
除了官方支持的数据库外,还有第三方提供的后端允许您在 Django 中使用它们。如果需要使用其他数据库,可以自行查看。
接下来我们修改数据库为MySQL,并将配置信息改为:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
"NAME": "poycode_bbs",
"USER": "root",
"PASSWORD": "12345678",
"HOST": "192.168.8.142",
"PORT": "3306",
}
}
2.新建应用
在Django中项目和应用有什么区别?
应用是一个专门做某件事的应用程序——比如积分系统,支付系统,或者日志系统,亦或者一些小型的类似投票、签到之类的程序。
而项目则是一个网站使用的配置和应用的集合。一个项目可以包含很多个应用,应用可以被很多个项目使用。
在上一篇文章中,我们已经学会使用命令:
python manage.py startapp bbs
我们新建一个bbs应用。
3.新建模型
一个模型就是单个定义你的数据的信息源。模型中包含了不可缺少的数据区域和存储数据的行为。Django 遵循 DRY 原则[4](Do Not Repeat Yourself)。目的就是定义你的数据模型要在同一位置上,而且自动从该位置推导一些事情。
来介绍一下迁移 - 举个例子,不像 Ruby On Rails,Django 的迁移代码是由你的模型文件自动生成的,它本质上是个历史记录,Django 可以用它来进行数据库的滚动更新,通过这种方式使其能够和当前的模型匹配。
例如我们新建一个模型,Post代表文章,UserPost代表用户浏览文章的一些记录
class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
pub_date = models.DateTimeField(auto_now_add=True)
class UserPost(models.Model):
user_id = models.BigIntegerField(name='用户ID')
read_times = models.BigIntegerField(name='个人点击次数', default=1)
is_like = models.BooleanField(name = '喜欢', default=False)
is_start = models.BooleanField(name= '收藏', default=False)
is_public = models.BooleanField(name='公开', default=True)
post = models.ForeignKey(Post, on_delete=models.CASCADE)
上面的代码用于创建模型,但其实这给了 Django 很多信息,Django 可以通过我们编写的模型代码为这个应用创建数据库 schema(生成 CREATE TABLE
语句),并创建可以与 Post
和 UserPost
对象进行交互的 Python 数据库 API。
OK,上述步骤完成之后,我们还需要做什么?要知道,为什么说,应用是一个专门做某件事的应用程序。Django中应用是可插拔式的,这也是Django的设计哲学之一,你可以在多个项目中使用同一个应用。除此之外,你还可以发布自己的应用,因为它们并不会被绑定到当前安装的 Django 上。
为了使得我们的工程中包含bbs这个应用,我们需要在setting.py配置文件中找到INSTALLED_APPS
,点式路径就是下图中的类。django-app
INSTALLED_APPS = [
'bbs.apps.BbsConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
现在我们的项目已经包含了 bbs 应用程序,请运行以下命令
python manage.py makemigrations bbs
通过运行命令makemigrations
模型,Django 对文件的修改将在这种情况下注册得到了新的)并将更改的部分保存为_迁移_。同时,bbs/migrations文件夹下会生成迁移文件。
注意!此时数据库没有任何操作! file
Django 有一个命令可以自动执行数据库迁移并同步管理数据库结构 - 该命令是 migrate
[5],我们稍后会介绍 - 但是首先,我们看看迁移命令会执行哪些SQL语句。命令 sqlmigrate
[6] 接收迁移名称,然后返回相应的 SQL:
python manage.py sqlmigrate bbs 0001
- • 这个
sqlmigrate[7]77 实际上是在数据库中执行迁移 - 相反,它只是向屏幕发出命令,让您看到 Django 认为应该执行哪些 SQL 语句。如果您想查看 Django 实际在做什么,或者您是数据库管理员并且需要编写脚本来批处理数据库,这非常有用。
如果有兴趣,也可以尝试运行python manage.py check
[8]这个命令会帮助你检查项目中是否存在问题,并且在检查过程中不会损坏数据库执行任何操作。
4。迁移模型
在Django中,我们可以使用以下命令来实现真正的迁移行为,对数据库进行更改!
python manage.py migrate

此时打开数据库,可以看到Django为我们生成了数据库表。 Django模型的每次更改都需要进行迁移,并且保存迁移记录,因此当我们直接将应用程序移植到其他项目时,可以直接运行迁移来快速构建并运行项目。这也是Python可插拔设计理念的体现之一。
5。数据操作
5.1 使用生成的API操作数据
进入交互式Python命令行,使用以下命令打开。让我们体验一下Django创建的各种API。
python manage.py shell
from bbs.models import Post
>>> from django.utils import timezone
>>> p = Post(title='第一批测试文章', content='文章内容11111测试', pub_date = timezone.now())
>>> p.save()
>>> p.id
1
>>> p.content
'文章内容11111测试'
>>> p.title='更换title'
>>> p.save()
5.2 Django自己的后台进行操作
当Django被创建时,我们默认安装了一个后台管理应用程序。您可以使用以下命令创建帐户,并根据提示输入用户名和密码即。该帐户可用于访问。
python manage.py createsuperuser
##### 创建完账户后,使用web方式运行django
python manage.py runserver
访问地址:http://127.0.0.1:8000/admin 并输入上面创建的账号和密码django-admin
输入后发现Django自带了用户和组管理。它们由 django.contrib.auth 提供,django.contrib.auth 是 Django 开发的身份验证框架。问题是我们的bbs应用在哪里?我们需要在 bbs/admin.py 中注册我们的模型,并告诉 django 为模型生成一个后端接口!
from django.contrib import admin
# Register your models here.
from .models import Post
admin.site.register(Post)
更改完成后,刷新页面后就可以操作Post对象了! django-admin-app
6。总结
本文简单介绍了Django模型。在接下来的文章中,我们将继续深入探讨Django模型的使用,主要关注查询。总而言之,通过定义模型,我们可以轻松地管理和操作数据库中的数据。其易用性和可扩展性使程序员能够轻松构建高质量和可扩展的 Web 应用程序。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。