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

文章目录

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【IMX6ULL驱动开发学习】06.DHT11温湿度传感器驱动程序编写与测试

一、DHT11简介 DHT11是一款可测量温度和湿度的传感器。比如市面上一些空气加湿器,会测量空气中湿度,再根据测量结果决定是否继续加湿。 DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,具有超小体积、极低功耗的特点…

TiDB数据库从入门到精通系列之六:使用 TiCDC 将 TiDB 的数据同步到 Apache Kafka

TiDB数据库从入门到精通系列之六:使用 TiCDC 将 TiDB 的数据同步到 Apache Kafka 一、技术流程二、搭建环境三、创建Kafka changefeed四、写入数据以产生变更日志五、配置 Flink 消费 Kafka 数据 一、技术流程 快速搭建 TiCDC 集群、Kafka 集群和 Flink 集群创建 c…

清除pip安装库时的缓存

目录 1、命令清除缓存 2、路径手动清除 在使用pip安装Python库时,如果之前已经下载过该库,pip会默认使用缓存来安装库,而不是重新从网络上下载。缓存文件通常存储在用户目录下的缓存文件夹中,具体位置因操作系统和Python版本而异…

剑指offer43.1~n整数中1出现的次数

看到这么大的数据规模就直到用暴力法肯定会超时&#xff0c;但是还是花一分钟写了一个试一下&#xff0c;果然超时 class Solution {public int countDigitOne(int n) {int count 0;for(int i1;i<n;i){countdigitOneInOneNum(i);}return count;}public int digitOneInOneNu…

【CSS】禁用元素鼠标事件(例如实现元素禁用效果)

文章目录 基本用法 基本用法 pointer-events 属性指定在什么情况下 (如果有) 某个特定的图形元素可以成为鼠标事件。实际运用中可以通过对auto 和none动态控制&#xff0c;来动态实现元素的禁用效果。 属性描述auto与pointer-events属性未指定时的表现效果相同&#xff0c;对…

Java版企业电子招投标采购系统源码之首页设计 tbms

​ 功能描述 1、门户管理&#xff1a;所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含&#xff1a;招标公告、非招标公告、系统通知、政策法规。 2、立项管理&#xff1a;企业用户可对需要采购的项目进行立项申请&#xff0c;并提交审批&#xff0c;查…

Curson 编辑器

Curson 汉化与vacode一样 Curson 自带chat功能 1、快捷键ctrlk(代码中编辑) 2、快捷键ctrll 右侧打开窗口

spark的standalone 分布式搭建

一、环境准备 集群环境hadoop11&#xff0c;hadoop12 &#xff0c;hadoop13 安装 zookeeper 和 HDFS 1、启动zookeeper -- 启动zookeeper(11,12,13都需要启动) xcall.sh zkServer.sh start -- 或者 zk.sh start -- xcall.sh 和zk.sh都是自己写的脚本-- 查看进程 jps -- 有…

CentOS系统环境搭建(十五)——CentOS安装Kibana

centos系统环境搭建专栏&#x1f517;点击跳转 关于Elasticsearch的安装请看CentOS系统环境搭建&#xff08;十二&#xff09;——CentOS7安装Elasticsearch。 CentOS安装Kibana 1.下载 &#x1f517;https://www.elastic.co/downloads/past-releases/kibana-7-17-12 若你是…

Ansys Zemax | 手机镜头设计 - 第 1 部分:光学设计

本文是 3 篇系列文章的一部分&#xff0c;该系列文章将讨论智能手机镜头模组设计的挑战&#xff0c;从概念、设计到制造和结构变形的分析。本文是三部分系列的第一部分&#xff0c;将专注于OpticStudio中镜头模组的设计、分析和可制造性评估。&#xff08;联系我们获取文章附件…

【变形金刚01】attention和transformer所有信息

图1.来源&#xff1a;Arseny Togulev在Unsplash上的照片 一、说明 这是一篇 长文 &#xff0c;几乎讨论了人们需要了解的有关注意力机制的所有信息&#xff0c;包括自我注意、查询、键、值、多头注意力、屏蔽多头注意力和转换器&#xff0c;包括有关 BERT 和 GPT 的一些细节。因…

磁力线试验+多图

今天要磨制一个钢针工具。磨下来很多的铁屑&#xff0c;灵机一动&#xff0c;何不来试验一下磁铁的磁力线。这可是难得的材料。 下放7颗强力磁铁&#xff0c;可见强力磁铁的磁力线非常集中。 下放直径4CM的喇叭磁铁 强力磁铁U型铁 强力磁铁E型铁氧体磁芯&#xff0c;可见磁力线…

可视化绘图技巧100篇进阶篇(九)-三维百分比堆积条形图(3D Stacked Percentage Bar Chart)

目录 前言 适用场景 绘图工具及代码实现 帆软 实现思路 方案一&#xff1a;使用计算指标 上传数据 添加组件 生成图表 添加计算字段 生成分区柱形图 生成百分比堆积条形图 美化图表 设置标签 设置颜色 效果查看 PC 端 移动端 方案二&#xff1a;使用自助数…

tk切换到mac的code分享

文章目录 前言一、基础环境配置二、开发软件与扩展1.用到的开发软件与平替、扩展情况 总结 前言 最近换上了coding人生的第一台mac&#xff0c;以前一直偏好tk&#xff0c;近来身边的朋友越来越多的用mac了&#xff0c;win的自动更新越来越占磁盘了&#xff0c;而且win11抛弃了…

ReactNative进阶(三十四):ipa Archive 阶段报错error: Multiple commands produce问题修复及思考

文章目录 一、前言二、问题描述三、问题解决四、拓展阅读五、拓展阅读 一、前言 在应用RN开发跨平台APP阶段&#xff0c;从git中拉取项目&#xff0c;应用Jenkins进行组包时&#xff0c;发现最终生成的ipa安装包版本号始终与项目中设置的版本号不一致。 二、问题描述 经过仔…

svn 过滤文件

1. 右键点击&#xff0c;依次选择 TortoiseSVN -> Settings 2. 添加需要过滤的后缀/关键词【 *.iml *.idea *.jar *.class 】

01- vdom 和模板编译源码

组件渲染的过程 template --> ast --> render --> vDom --> 真实的Dom --> 页面 Runtime-Compiler和Runtime-Only的区别 - 简书 编译步骤 模板编译是Vue中比较核心的一部分。关于 Vue 编译原理这块的整体逻辑主要分三个部分&#xff0c;也可以说是分三步&am…

Nginx转发请求到后端服务报400 Bad Request

问题描述 系统部署好后&#xff0c;进行测试时发现有部分接口出错&#xff0c;项目采用Nginx作为后端代理服务器&#xff0c;有Nginx统一将请求转发到后端的网关服务&#xff0c;再由网关服务路由到具体的服务上&#xff0c;发布好后&#xff0c;大部分接口都是正常的&#xff…

时序预测 | MATLAB实现基于CNN-GRU卷积门控循环单元的时间序列预测-递归预测未来(多指标评价)

时序预测 | MATLAB实现基于CNN-GRU卷积门控循环单元的时间序列预测-递归预测未来(多指标评价) 目录 时序预测 | MATLAB实现基于CNN-GRU卷积门控循环单元的时间序列预测-递归预测未来(多指标评价)预测结果基本介绍程序设计参考资料 预测结果 基本介绍 MATLAB实现基于CNN-GRU卷积…

一.RocketMQ概念

RocketMQ概念 1.概念2.应用场景3.MQ的优点和缺点4.常见MQ对比 1.概念 MQ(Message Queue)&#xff0c;是一种提供消息队列服务的中间件&#xff0c;也称为消息中间件&#xff0c;是一套提供了消息生产、存储、消费全过程API的软件系统。 RocketMQ是阿里巴巴2016年MQ中间件&…