下面就为你详细讲解“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': '127.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框架能够让我们更加方便地操作数据库。
3. 示例说明
上述步骤可能仍有些抽象,接下来我们通过两个简单的示例来说明models.py
应用实现的过程。
3.1 示例一:制作图书管理应用
首先,我们来制作一个简单的图书管理应用,用于记录图书的基本信息。
3.1.1 创建Django应用
我们使用以下命令在Django项目中创建一个名为book
的新应用。
python manage.py startapp book
3.1.2 修改models.py文件
打开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
在这个模型定义中,我们定义了图书模型Book
,包括了title
、author
、publisher
、price
和pub_date
五个字段,分别表示书名、作者、出版社、价格和出版日期。其中title
和author
是必须填写的,price
是带两位小数的十进制数,pub_date
是日期类型,这些限制条件会在创建该模型对应的数据表格时进行限制。
3.1.3 进行数据迁移
使用以下命令进行数据迁移。
python manage.py migrate
在数据库中将会生成一个新的名为book_book
的表格,用于存储Book
模型对应的对象信息。
3.1.4 操作数据
现在我们可以使用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网络爬虫开发实战')
获取了一本图书,并将它的价格更新为89.00。
最后,我们又使用Book.objects.get(title='Python网络爬虫开发实战')
获取了该图书,并将其删除。
3.1.5 示例执行结果
执行上述操作后,代码输出如下:
Python网络爬虫开发实战
Python爬虫开发实战
Python深度学习框架
Python程序设计基础
Python高级编程
其中,倒数第二行的“Python爬虫开发实战”表示先前创建的一本图书。
3.2 示例二:制作留言板应用
我们再来制作一个简单的留言板应用,用于记录用户提交的留言信息。
3.2.1 创建Django应用
我们使用以下命令在Django项目中创建一个名为message
的新应用。
python manage.py startapp message
3.2.2 修改models.py文件
打开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
是自动使用当前时间的字段,这些限制条件也会在创建表格时进行限制。
3.2.3 进行数据迁移
使用以下命令进行数据迁移。
python manage.py migrate
在数据库中将会生成一个新的名为message_message
的表格,用于存储Message
模型对应的对象信息。
3.2.4 操作数据
现在我们可以使用Django的ORM框架来对这个表格进行操作了。
# 新增一条留言
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='张三')
获取了这条留言,并把它删除。
3.2.5 示例执行结果
执行上述操作后,代码输出如下:
张三 (zhangsan@example.com)
李四 (lisi@example.com)
王五 (wangwu@example.com)
其中,倒数第三行的内容表示先前创建的一条留言。
4. 总结
通过本文的介绍,我们了解了models.py
应用实现的过程,它包括了创建models.py
文件、配置数据库连接、进行数据迁移和操作数据表格四个步骤。
同时,我们还通过两个简单的示例说明了如何制作一个简单的图书管理应用和留言板应用,并使用Django的ORM框架进行数据操作。
希望读者们能够通过本文的介绍,更好地理解和运用Django中的models.py
应用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django models.py应用实现过程详解 - Python技术站