【Django】Task2 了解models和使用admin后台

【Django】Task2 了解models和使用admin后台

Task2主要了解Django中的models模块和admin后台的使用
在这里插入图片描述

1.什么是models

在 Django 中,models 是必不可少的组成部分之一。models 是 Django ORM(对象关系映射)的核心部分,它允许您在 Python 代码中定义数据模型,这些模型将映射到数据库表格。通过定义数据模型,您可以轻松地在代码中创建、查询和管理数据库表格,而无需编写原始的 SQL 查询语句。

以下是一些关键原因,说明为什么 Django 中的 models 是必须的:

数据持久化: 在许多 Web 应用程序中,需要将数据持久化到数据库中以进行长期存储。models 允许您在 Python 代码中定义数据模型,然后通过迁移操作将这些模型映射到数据库表格。

数据库交互: 通过使用 models,您可以使用 Python 代码而不是直接的 SQL 查询来操作数据库。这样可以让开发更加方便、可读性更高,并且避免了编写大量的重复代码。

数据库结构管理: Django 的迁移系统允许您对数据库结构进行版本控制和管理。当您更改 models 定义时,可以通过运行迁移来同步数据库结构,而不必手动更改数据库表格。

高级特性: models 不仅仅是将数据模型映射到表格,还可以定义字段、关系、验证规则等。您可以定义数据模型之间的关联关系,如一对多、多对多等。这些高级特性可以帮助您更好地建模和组织数据。

管理后台: Django 自带一个强大的管理后台,它可以自动生成用于管理数据库内容的界面。models 的定义直接影响着管理后台的表现。

总之,models 是 Django 中非常重要的组成部分,它使您能够在 Python 代码中定义数据模型,并将其映射到数据库表格,从而实现数据持久化和数据库交互。

1.1常用字段类型说明

  ​CharField​:用于存储字符串类型,有最大长度限制

  ​IntegerField​:用于存储整数类型

  ​FloatField​:用于存储浮点数类型

  ​BooleanField​:用于存储布尔类型

  ​DateField​:用于存储日期类型

  ​DateTimeField​:用于存储日期和时间类型

  ​ImageField​:用于存储图片类型

  ​FileField​:用于存储文件类型

  ​ForeignKey​:外键 用于表示数据库表之间的关联关系

  ​OneToOneField​:一对一 用于表示一对一的关联关系

  ​ManyToManyField​:多对多 用于表示多对多的关联关系

1.2常用配置参数

​max_length​:字段的最大长度限制,可以应用于多种不同的字段类型。

​verbose_name​:字段的友好名称,便于在管理员后台可视化操作时使用。

​default​:指定字段的默认值。

​null​:指定字段是否可以为空。null=True​ 设置允许该字段为 NULL 值

​blank​:指定在表单中输入时是否可以为空白。

​choices​:用于指定字段的可选值枚举列表。

1.3models示例

在最上面定义

class DeliveryMaterial(Model):
    """复核产品"""

    class Status(TextChoices):
        """状态"""

        QUALIFIED = ('qualified', '良品')
        UNQUALIFIED = ('unqualified', '不良品')

    status = CharField(max_length=32, choices=Status.choices, default=Status.QUALIFIED, verbose_name='状态')

其中:
​TextChoices​ 是 Django 3.0 引入的一个枚举类,用于在模型字段中创建可选择的、文本值的选项。

​related_name​:指定在多对多等关系中反向使用的名称。

​on_delete​:指定如果外键关联的对象被删除时应该采取什么操作。

2.使用Django的admin管理模块

2.1admin管理模块介绍

Django 的 admin 模块是一个内置的管理后台,它提供了一个功能强大的界面,用于管理和操作数据库中的数据。通过 admin 模块,您可以轻松地进行数据的创建、读取、更新和删除操作,而无需编写自定义的管理界面。以下是关于 Django 的 admin 模块的详细解释:

注册模型: 要在 admin 后台管理某个模型(数据库表格),您需要将该模型注册到 admin 中。在模型的相关 Python 文件中,使用 admin.site.register(ModelName) 来注册该模型。

自动生成管理界面: 一旦模型被注册,admin 模块会自动为该模型生成一个管理界面。这个界面允许您在浏览器中查看、添加、编辑和删除数据库中的记录。

自定义显示字段: 您可以在模型的注册中定义 list_display 属性,指定在列表视图中显示哪些字段。这允许您自定义在记录列表中显示的信息。

搜索和过滤: admin 提供了搜索框和过滤器,让您能够根据特定条件查找和筛选记录。

编辑和详情视图: 对于每个记录,admin 生成一个详情视图,允许您查看完整的记录信息。您还可以在编辑视图中修改记录的内容。

内联编辑: 如果模型之间存在关联关系,例如一对多关系,admin 允许您在同一页面内编辑关联的记录。这被称为内联编辑。

自定义表单: 您可以自定义在添加和编辑视图中显示的字段。这允许您根据需要隐藏某些字段或添加额外的字段。

权限控制: admin 具有细粒度的权限控制,您可以根据用户角色(超级用户、普通用户等)限制其访问和操作的内容。

自定义动作: 您可以在 admin 模块中定义自定义操作,称为动作。这些动作可以在多个记录上执行,例如将选定的记录标记为已完成。

主题定制: admin 允许您进行界面的定制,您可以调整颜色、字体等,以使界面与您的应用程序的样式相匹配。

多语言支持: admin 模块支持多语言,允许您为不同的语言提供翻译和本地化。

可扩展性: 尽管 admin 提供了大量内置的功能,您还可以通过自定义 admin 类来进一步扩展和定制。

总之,Django 的 admin 模块是一个强大的工具,使开发人员能够快速搭建功能完备的管理后台,轻松地管理和操作数据库中的数据。通过这个模块,您可以在不编写额外代码的情况下,提供一个友好的用户界面,用于管理您的应用程序的数据。

在此贴上一些Django的常用操作博客:
Django基础与高阶使用https://blog.csdn.net/qq_39187019/category_10287078.html

2.2创建管理员用户

创建后台 admin 管理员(创建超级管理员)

 ​python manage.py createsuperuser 

在这里插入图片描述

2.3定义models实体对象

在models.py中定义产品分类和产品两个对象

from django.db import models

# Create your models here.
from django.db.models import *


# Create your models here.
## 产品分类表
class GoodsCategory(Model):
    """产品分类"""

    name = CharField(max_length=64, verbose_name='分类名称')
    remark = CharField(max_length=64, null=True, verbose_name='备注', blank=True)


## 产品表
class Goods(Model):
    """产品"""

    # 外键
    category = ForeignKey(GoodsCategory, on_delete=SET_NULL, related_name='goods_set', null=True,
                          verbose_name='产品分类', blank=True, )
    # on_delete

    number = CharField(max_length=32, verbose_name='产品编号')
    name = CharField(max_length=64, verbose_name='产品名称')
    barcode = CharField(max_length=32, null=True, blank=True, verbose_name='条码')
    spec = CharField(max_length=64, null=True, blank=True, verbose_name='规格')
    shelf_life_days = IntegerField(null=True, verbose_name='保质期天数')
    purchase_price = FloatField(default=0, verbose_name='采购价')
    retail_price = FloatField(default=0, verbose_name='零售价')
    remark = CharField(max_length=128, null=True, blank=True, verbose_name='备注')



2.4注册对象

在admin.py中注册对象

# Register your models here.
from django.contrib import admin
from .models import * # 引入产品表

# 一定要分开逐个注册,不能放在一起

admin.site.register(Goods) # 在admin站点中 注册产品表
admin.site.re

2.5合并数据库

当你修改了Django模型后,你需要运行这两个命令,以将这些更改应用到数据库中
如果修改了models不执行合并数据库命令,会出现找不到表的报错
在这里插入图片描述

这两个命令是Django框架中的关键命令,用于进行数据库迁移。。

python manage.py makemigrations​: 这个命令用于生成迁移脚本。当你更新了模型文件之后,需要运行该命令,Django会检测模型的改变,然后自动生成相应的迁移脚本,存储在migrations/​目录下。通常来说,你需要针对每个应用运行一次该命令。

​python manage.py migrate​: 这个命令用于将迁移脚本应用到数据库中。当你在模型文件中进行更改之后,需要先通过makemigrations​命令生成迁移脚本,然后运行该命令将这些脚本应用到数据库中。对于新的迁移脚本,Django会逐个执行它们,从而更新数据库结构。对于已经执行过的脚本,Django会跳过它们,避免重复执行。
这两个命令是Django框架中非常重要的命令,在修改数据库相关内容时必须时刻清醒地记住使用它们。

执行完上述命令后可以看到数据库新增了models中定义的两张表
在这里插入图片描述

2.6启动项目并进入管理后台

启动项目命令

python manage.py runserver

登录 admin 后台(浏览器中输入)

http://127.0.0.1:8000/admin
在这里插入图片描述

3.springboot和Django的区别

Spring Boot 和 Django 都是流行的 Web 开发框架,但它们是在不同的编程语言(Java 和 Python)中开发的,因此在某些方面存在一些区别。以下是 Spring Boot 项目和 Django 项目之间的一些比较,以及 Django 的一些主要优点:

比较

编程语言:

Spring Boot:使用 Java 编程语言。
Django:使用 Python 编程语言。
生态系统:

Spring Boot:属于 Spring 生态系统,提供了广泛的功能和模块,适用于企业级应用开发。
Django:提供了全面的框架,适用于中小规模的 Web 应用和快速开发。
语法和哲学:

Spring Boot:Java 通常需要更多的代码量和样板代码,但在大型企业应用中更受欢迎。
Django:Python 的语法更加简洁,减少了样板代码,适合快速开发和小型项目。
数据库:

Spring Boot:提供了 JPA(Java Persistence API)等多种数据库访问方式。
Django:具有内置的 ORM(对象关系映射)系统,使数据库访问更加简单。

Django 的主要优点

快速开发: Django 的设计目标之一是快速开发。它提供了许多内置功能,如认证、管理员界面、表单处理等,减少了开发人员需要从头开始编写的代码量,从而加快了项目的开发速度。

强大的 ORM: Django 的 ORM 简化了与数据库的交互,允许您使用 Python 代码来定义数据模型和数据库表格。它支持多种数据库后端,并提供了丰富的查询和数据操作功能。

丰富的内置功能: Django 包括用户认证、管理后台、国际化支持、安全性等许多内置功能,这些功能在许多 Web 应用中是常见的需求,使开发更加高效。

社区支持和文档: Django 拥有活跃的社区,提供了丰富的文档和教程,帮助开发人员学习和使用框架。这使得学习和解决问题变得更加容易。

灵活性: 尽管 Django 提供了许多默认的约定,但它也允许开发人员根据项目的需求进行定制,从而在大多数情况下实现了“Django 的方式”,同时仍然保持了灵活性。

总之,Django 是一个功能强大且易于使用的 Web 开发框架,特别适用于快速开发中小型 Web 应用程序。其内置功能、ORM、快速开发哲学和优雅的 Python 语法都是 Django 的主要优点之一。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值