Django模型类设计与Admin后台展示完整指南
本文详解Django中基于ORM的模型类设计流程,涵盖字段类型选择、数据库迁移命令及Admin后台配置。通过Subject和Teacher模型示例,演示如何创建超级用户、注册模型、生成迁移文件,并在HTML页面中展示数据,实现从数据库到前端视图的完整数据交互。
Django ORM模型设计基础
在Django框架中,设计数据模型类主要依赖于ORM(对象关系映射)机制,这使得对数据库的操作更加便捷和直观。
- 对象关系映射
- ORM的核心思想是将面向对象编程中的类与数据库中的表建立对应关系。开发者只需操作类和对象实例,即可对数据库表执行增删改查操作,无需手动编写SQL语句,所有SQL由ORM框架自动生成。
- Django内置了完善的ORM框架,它在Python项目与底层数据库之间充当桥梁,屏蔽了不同数据库的差异。
- 在Django中定义数据库模型的具体步骤如下:
数据库迁移与模型定义
python manage.py makemigrations
python mange.py migrate
- 首先,在应用的models.py文件中编写模型类,并确保该类继承自models.Model基类。
- 接着,在模型类内部定义各个属性,这些属性将映射为数据库表中对应的字段。
- 属性定义的语法格式为:属性名 = models.字段类型。
- 需要注意的是,字段类型一旦确定并生成迁移文件后,若需修改类型,通常涉及数据迁移的重新执行,需谨慎操作。
Django提供的常用字段类型及其参数说明如下: AutoField:自动增长的整型字段,通常无需手动指定,Django会自动创建一个名为id的自增主键。 CharField:字符串字段,必须指定max_length参数以定义最大字符数。 TextField:大文本字段,适用于存储超过4000个字符的内容。 IntegerField:普通整型字段。 BooleanField:布尔字段,支持True和False值,且允许为Null。 NullBooleanField:支持Null、True、False三种状态的布尔字段。 DateTimeField:日期时间字段,用于存储日期和时间信息。 FileField:文件上传字段。 ImageField:继承自FileField,额外提供对上传内容的校验,确保上传的是有效图片文件。 ForeignKey:外键字段,用于建立一对多的关联关系。
from django.db import models
# Create your models here.
class Subject(models.Model):
"""学科模型类"""
nu = models.AutoField(primary_key=True)
name = models.CharField(max_length=20,verbose_name = '学科名称')
intro = models.CharField(max_length=1000,verbose_name = '学科介绍')
class Meta:
db_table = 'tb_subject'
verbose_name = '学科'
verbose_name_plural = verbose_name
def __str__(self):
"""定义数据对象的显示信息"""
return self.name

完成模型定义后,需要在PyCharm终端中执行数据库迁移命令以创建或更新数据库表结构。
python manage.py makemigrations
python manage.py migrate
执行上述命令后,Django会在应用的migrations文件夹中生成对应的Python迁移文件,记录数据库结构的变更。
Admin后台配置与用户管理
为了直观查看和管理创建的数据模型,可以使用Django自带的Admin后台管理系统。
Admin后台配置
使用Admin功能前,需要先创建一个具有管理员权限的用户名和密码。
在PyCharm终端中输入以下命令来创建超级用户。
python manage.py createsuperuser
根据终端提示,依次输入用户名、邮箱地址和密码即可完成超级用户的创建。

随后,需要在admin.py文件中注册刚才创建的模型类,并配置希望显示的数据列表字段。

启动Django项目后,在浏览器中访问 http://127.0.0.1:8000/admin/ 地址。
在登录页面输入之前创建的超级用户名和密码。
成功登录后,即可在后台界面中看到之前创建的数据模型类列表。

点击“Add”按钮,可以添加新的数据记录。
界面会显示你定义的模型类表单。

例如,如果继承了SubjectAdmin类,后台将要求显示学科的相关信息字段。

视图映射与前端页面展示
接下来,可以将模型数据映射到视图函数,并最终展示在HTML页面上。
在Views.py文件中,导入Subject模型类,并通过查询集获取所有数据。

在templates文件夹中创建一个index.html文件,用于渲染页面。
利用Django模板语言中的for循环,将获取到的数据插入到HTML页面中进行展示。

启动Django服务器,并在本地浏览器中打开对应的网址查看效果。

为了提升页面的视觉效果,可以为页面添加图片资源。
在项目根目录的同级目录下,创建一个专门用于存放静态资源(如照片)的文件夹。

同时,需要在settings.py配置文件中设置STATIC_URL或STATICFILES_DIRS,以指明静态文件的正确路径。

修改HTML页面代码,引入图片标签。
在HTML中正确引用图片的路径,确保资源能被加载。

重新启动Django项目,点击本地链接访问页面,检查图片是否正常显示。

多对一关系与扩展展示
此外,可以进一步扩展模型数据库,实现点击学科名称时,展示该学科下的老师列表及其介绍,从而建立数据的多对一或一对多关系。
在models.py中建立老师(Teacher)的模型类,定义相关字段。

在admin.py中注册老师模型类,以便在后台进行管理。

进入Admin后台,添加若干老师的数据记录。

现在,当点击学科进入详情页时,需要编写相应的HTML文件和修改urls.py路由配置,以支持老师数据的展示。
在templates文件夹中建立teachers.html文件,用于展示老师信息。

在views.py中编写逻辑,处理视图请求。

通过点击学科链接获取关联的老师数据,并传递给模板进行渲染。



至此,Django简单项目中关于模型的设计、后台管理及前端展示功能均已实现。
总结
到此这篇关于Django中的模型类设计及展示示例详解的文章就介绍到这了,更多相关django模型类设计及展示内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









