Login
网站首页 > 文章中心 > 其它

Django_models.py应用实现过程详解

作者:小编 更新时间:2023-08-16 07:48:26 浏览量:26人看过

下面就为你详细讲解"Django models.py应用实现过程详解"的完整攻略.

1. 前提知识

在正式开始之前,我们需要先了解一些前提知识:

Django框架的基本概念和使用方法

Python的基础语法和面向对象编程思想

数据库的基础知识以及SQL语句的使用

如果你还不熟悉这些知识,请先进行相关学习,否则可能会对本文的理解造成不便.

2. Django的models.py文件

在Django框架中,models.py文件是用于定义模型(Model)的地方.模型定义了数据库中数据表的结构和约束条件,包括字段名、类型、验证规则和默认值等.

在模型定义完成后,Django可以自动生成数据库表格,并提供了ORM(Object-Relation Mapping)框架,允许我们使用类似于面向对象编程的方式来操作数据库.这样操作数据库将更加简单高效,并且可以避免SQL注入等问题.

下面我们来详细了解models.py应用的实现过程.

2.1 创建models.py文件

在Django应用中,我们需要先创建一个新的应用,进入到应用的文件夹中,然后创建一个models.py文件.


# myapp/models.py
from django.db import models

# 模型定义
class Person(models.Model):
name = models.CharField(max_length=30)
age = models.IntegerField()
sex = models.CharField(max_length=6, choices=[('male', '男'), ('female', '女')])
address = models.CharField(max_length=100)

def __str__(self):
    return self.name


在models.py中,我们定义了一个名为Person的模型,它继承了models.Model类,表示该模型是一个数据库表格.

在模型Person中,我们定义了四个字段,分别是name,age,sex和address,它们对应了数据库表格中的四个列.其中name和age是必须填写的,sex是一个选项字段,address是可选的.__str__方法定义了该模型对象被打印时的输出,以方便我们查看该对象信息.

2.2 配置数据库连接

在Django中,我们需要先在settings.py文件中设置数据库连接信息,然后才能进行数据操作.


# myproject/settings.py
DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'mydatabase',
    'USER': 'mydatabaseuser',
    'PASSWORD': 'mypassword',
    'HOST': '12⑦0.0.1',
    'PORT': '3306',
    'OPTIONS': {
        'charset': 'utf8mb4',
    },
}
}


在DATABASES变量中,我们设置了数据库的连接信息,包括数据库引擎ENGINE、数据库名NAME、数据库用户名USER、数据库密码PASSWORD、数据库主机地址HOST、数据库端口号PORT和其他可选项OPTIONS.

这里以MySQL数据库为例,其他数据库的配置方式可以参考Django官方文档.

2.3 进行数据迁移

在数据库连接信息配置完成后,我们需要使用Django提供的命令行工具来生成数据库迁移文件,并将该文件应用到数据库中.


python manage.py makemigrations
python manage.py migrate


其中makemigrations命令用于生成数据库迁移文件,它会根据models.py中的模型定义生成对应的迁移文件.而migrate命令用于将数据库迁移文件应用到数据库中,执行数据库表格的创建、字段的添加等操作.

2.4 操作数据表格

通过以上步骤,我们已经成功地定义了一个模型,并将其映射到了数据库表格中.此时此刻呢,我们可以通过Django提供的ORM框架来对该表格进行数据操作了.


# 获取全部person对象
persons = Person.objects.all()
for person in persons:
print(person.name, person.age, person.sex, person.address)

# 创建一个person对象
person = Person(name='张三', age=18, sex='male', address='北京市')
person.save()

# 更新一个person对象
person.age = 20
person.save()

# 删除一个person对象
person.delete()


首先,我们通过Person.objects.all()来获取了数据库表格中所有的Person对象,并且遍历输出了各对象的属性.

接着,我们创建了一个名为"张三"的新对象,并调用了save()方法来将其保存到数据库中.

然后,我们又更新了该对象的age属性,并调用save()方法来将更新保存到数据库中.

最后,我们通过delete()方法删除了该对象.

如果需要更多关于ORM的操作指令,可以参考Django官方文档.都说到这里了大家应该明白,使用Django的ORM框架能够让我们更加方便地操作数据库.

③ 示例说明

上述步骤可能仍有些抽象,此时此刻呢我们通过两个简单的示例来说明models.py应用实现的过程.

③1 示例一:制作图书管理应用

首先,我们来制作一个简单的图书管理应用,用于记录图书的基本信息.

我们使用以下命令在Django项目中创建一个名为book的新应用.


python manage.py startapp book


打开book/models.py文件,在其中添加以下代码.


from django.db import models

# 图书模型
class Book(models.Model):
title = models.CharField(max_length=50)  # 书名
author = models.CharField(max_length=50)  # 作者
publisher = models.CharField(max_length=50)  # 出版社
price = models.DecimalField(max_digits=5, decimal_places=2)  # 价格
pub_date = models.DateField()  # 出版日期

def __str__(self):
    return self.title


使用以下命令进行数据迁移.


python manage.py migrate


在数据库中将会生成一个新的名为book_book的表格,用于存储Book模型对应的对象信息.

现在我们可以使用Django的ORM框架来对这个表格进行操作了.


# 新增一本图书
book = Book(title='Python网络爬虫开发实战', author='王斌华', publisher='机械工业出版社', price='69.00', pub_date='2021-08-01')
book.save()

# 获取全部图书并输出
books = Book.objects.all()
for book in books:
print(book)

# 修改一本图书的价格
book = Book.objects.get(title='Python网络爬虫开发实战')
book.price = 89.00
book.save()

# 删除一本图书
book = Book.objects.get(title='Python网络爬虫开发实战')
book.delete()


我们先新增了一本图书,然后使用Book.objects.all()获取了全部图书,并将它们输出.

最后,我们又使用Book.objects.get(title='Python网络爬虫开发实战')获取了该图书,并将其删除.

执行上述操作后,代码输出如下:


Python网络爬虫开发实战
Python爬虫开发实战
Python深度学习框架
Python程序设计基础
Python高级编程


其中,倒数第二行的"Python爬虫开发实战"表示先前创建的一本图书.

③2 示例二:制作留言板应用

我们再来制作一个简单的留言板应用,用于记录用户提交的留言信息.

我们使用以下命令在Django项目中创建一个名为message的新应用.


python manage.py startapp message


打开message/models.py文件,在其中添加以下代码.


from django.db import models

# 留言模型
class Message(models.Model):
name = models.CharField(max_length=20)  # 姓名
email = models.EmailField()  # 邮箱
content = models.TextField()  # 留言内容
add_time = models.DateTimeField(auto_now_add=True)  # 留言时间

def __str__(self):
    return '%s (%s)' % (self.name, self.email)


在这个模型定义中,我们定义了留言模型Message,包括name、email、content和add_time四个字段,分别表示用户姓名、邮箱、留言内容和留言时间.其中,email是email类型,content是文本类型,add_time是自动使用当前时间的字段,这些限制条件也会在创建表格时进行限制.


python manage.py migrate


在数据库中将会生成一个新的名为message_message的表格,用于存储Message模型对应的对象信息.


# 新增一条留言
message = Message(name='张三', email='zhangsan@example.com', content='这是一条留言')
message.save()

# 获取全部留言并输出
messages = Message.objects.all()
for message in messages:
print(message)

# 删除一条留言
message = Message.objects.get(name='张三')
message.delete()


我们使用Message()创建了一条新的留言,并把它保存到数据库中.

接着,我们使用Message.objects.all()获取了全部留言,并将它们输出.

最后,我们使用Message.objects.get(name='张三')获取了这条留言,并把它删除.


张三 (zhangsan@example.com)
李四 (lisi@example.com)
王五 (wangwu@example.com)


其中,倒数第三行的内容表示先前创建的一条留言.

④ 总结

通过本文的介绍,我们了解了models.py应用实现的过程,它包括了创建models.py文件、配置数据库连接、进行数据迁移和操作数据表格四个步骤.

同时,我们还通过两个简单的示例说明了如何制作一个简单的图书管理应用和留言板应用,并使用Django的ORM框架进行数据操作.

希望读者们能够通过本文的介绍,更好地理解和运用Django中的models.py应用.

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章