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

news2024/9/29 7:19:17

文章目录

  • 【Django】Task2 了解models和使用admin后台
    • 1.什么是models
      • 1.1常用字段类型说明
      • 1.2常用配置参数
      • 1.3models示例
    • 2.使用Django的admin管理模块
      • 2.1admin管理模块介绍
      • 2.2创建管理员用户
      • 2.3定义models实体对象
      • 2.4注册对象
      • 2.5合并数据库
      • 2.6启动项目并进入管理后台
    • 3.springboot和Django的区别

【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 的主要优点之一。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/887637.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机视觉:从图像识别到目标检测的技术进展

随着人工智能领域的快速发展,计算机视觉技术在过去几年中取得了令人瞩目的进步。从最初的图像识别到如今的目标检测,技术的不断创新和突破让计算机在理解和解释图像中变得越来越强大。本文将带您走进这一令人兴奋的领域,探索计算机视觉从图像…

ssh远程连接服务器

一、远程连接服务器简介 二、连接加密技术简介 三、ssh服务配置 四、用户登录ssh服务 Enforcing会强制限制,如端口为22,可以访问,如果是2000端口,不能使用 Permissive是宽容的模式,不限制使用端口 Enforcing会重启失败…

C++ 用st协程库解决 一个客户端同时连接多个服务端的问题 State Thread st协程库 在程序中的运用

继之前的一篇文章 业务需求是这样 程序中配置了很多个网络设备 这些设备作为server端 每隔1分钟要通过socket去和设备通信 以此来实现 设备是否在线 默认最传统的方法 一个线程中 遍历这些设备 假设有30个设备 每个设备超时时间5秒 那么 遍历一遍需要30*5 150秒 如…

uniapp 小兔鲜儿 - 首页模块(2)

目录 热门推荐 首页 – 热门推荐组件 首页 – 获取热门推荐数据 首页 – 热门推荐数据类型并渲染 猜你喜欢 首页 – 猜你喜欢组件 首页 – 获取猜你喜欢数据 首页 – 猜你喜欢数据类型和渲染 首页 – 猜你喜欢分页准备 首页 – 猜你喜欢分页加载 首页 – 猜你喜欢分…

RabbitMQ启动服务报错1067解决方案

首先: 你的 Erlang正确下载安装,且配置完成环境变量,可在命令行键入erl,若显示erlang版本则说明环境变量配置成功。如下: 原因分析: 1. 电脑名称为中文 2. erlang和rabbitmq版本不匹配 3. 安装目录有空格…

211、仿真-基于51单片机土壤湿度智能盆栽灌溉报警Proteus仿真设计(程序+Proteus仿真+配套资料等)

毕设帮助、开题指导、技术解答(有偿)见文未 目录 一、硬件设计 二、设计功能 三、Proteus仿真图 四、程序源码 资料包括: 需要完整的资料可以点击下面的名片加下我,找我要资源压缩包的百度网盘下载地址及提取码。 方案选择 单片机的选择 方案一&am…

诚迈科技荣膺小米“最佳供应商奖”

近日,诚迈科技受邀参加小米战略合作伙伴HBR总结会。诚迈科技以尽职尽责的合作态度、精益求精的交付质量荣膺小米公司颁发的最佳供应商奖,其性能测试团队荣获优秀团队奖。 诚迈科技与小米在手机终端方向一直保持着密切的合作关系,涉及系统框架…

机械臂-五次多项式与三次多项式对比

##1、三次多项式算法 代码如下: L(1) Link( d, 0.081, a ,-0.01 , alpha, pi/2 ,offset,0); L(2) Link( d, 0 , a , 0.099 , alpha, 0 ,offset,pi/2); L(3) Link( d, 0 , a , -0.01 , alpha,pi/2,offset,pi/2); L(4) Link( d, 0.1170.123,…

JVM中分代回收机制

为什么要分为新生代和老年代? 分为新生代(Young Generation)和老年代(Old Generation)是为了更有效地管理和优化内存的使用。 新生代主要存放生命周期较短的对象,例如方法的局部变量、临时变量等。由于这…

奥威BI财务数据分析方案:借BI之利,成就智能财务分析

随着智能技术的发展,各行各业都走上借助智能技术高效运作道路,财务数据分析也不例外。借助BI商业智能技术能够让财务数据分析更高效、便捷、直观立体,也更有助于发挥财务数据分析作为企业经营管理健康晴雨表的作用。随着BI财务数据分析经验的…

数据结构介绍

1、什么是数据结构呢? 计算机底层存储、组织数据的方式。是指数据相互之间是以什么方式排列在一起的。数据结构是为了更方便的管理和使用数据,需要结合具体的业务来进行选择。一般情况下,精心选择的数据结构可以带来更高的运行或者存储效率。…

STM32单片机并口通信编程实例:代码详解与应用案例

引言: 单片机并口通信是一种传统而常用的通信方式,通过并行方式进行数据传输。尽管串口通信在现代应用中更加普遍,但并口通信在一些特定领域的应用仍然具有重要意义。本文将介绍单片机并口通信的原理、配置和实践方法,并给出STM32…

中电金信通过KCSP认证 云原生能力获权威认可

中电金信通过KCSP(Kubernetes Certified Service Provider)认证,正式成为CNCF(云原生计算基金会)官方认证的 Kubernetes 服务提供商。 Kubernetes是容器管理编排引擎,底层实现为容器技术,是云原…

【数据结构与算法】普里姆算法

普里姆算法 最小生成树 最小生成树,简称MST。 给定一个带权的无向连通图,如何选取一棵生成树,使树上所有边上权的总和为最小,这就叫最小生成树。N 个顶点,一定有 N - 1 条边半酣全部顶点N - 1 条边都在图中举例说明…

爬虫逆向实战(五)--猿人学第三题

一、数据接口分析 主页地址:猿人学第三题 1、抓包 通过抓包可以发现数据接口是api/match/3 2、判断是否有加密参数 请求参数是否加密? 无请求头是否加密? 无响应是否加密? 无cookie是否加密? 无 二、发送请求 …

【Java】智慧工地SaaS平台源码:AI/云计算/物联网/智慧监管

智慧工地是指运用信息化手段,围绕施工过程管理,建立互联协同、智能生产、科学管理的施工项目信息化生态圈,并将此数据在虚拟现实环境下与物联网采集到的工程信息进行数据挖掘分析,提供过程趋势预测及专家预案,实现工程…

Redis对象和五种常用数据类型

Redisobject 对象 对象分为键对象和值对象 键对象一般是string类型 值对象可以是string,list,set,zset,hash q:redisobj的结构 typedef struct redisObject { //类型 unsigned type:4; //编码 unsigned encoding:4; //指向底层实现…

ArcGIS Pro如何制作不规则形状图例

在默认的情况下,ArcGIS Pro生成的图例是标准的点、直线和矩形的,对于湖泊等要素而言,这样的表示方式不够直观,我们可以将其优化一下,制作不规则的线和面来代替原有图例,这里为大家介绍一下制作方法&#xf…

广东灯具3D扫描抄数建模服务3D测绘出图纸三维逆向设计-CASAIM

灯具三维逆向建模是一种将实际物体转换为数字模型的过程。通过逆向工程技术,可以将现有的灯具进行3D扫描,然后利用专业的逆向设计软件将其转换为准确的三维模型。 以下是CASAIM实施灯具三维逆向建模的一般步骤图: 1. 扫描:三维扫…

基于Prometheus监控Kubernetes集群

目录 一、环境准备 1.1、主机初始化配置 1.2、部署docker环境 二、部署kubernetes集群 2.1、组件介绍 2.2、配置阿里云yum源 2.3、安装kubelet kubeadm kubectl 2.4、配置init-config.yaml 2.5、安装master节点 2.6、安装node节点 2.7、安装flannel、cni 2.8、部署测…