【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_deletenumber = 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.mzph.cn/news/46202.shtml

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

相关文章

通过cpolar在外远程查看家里内网监控

通过cpolar在外远程查看家里内网监控 文章目录 通过cpolar在外远程查看家里内网监控前言1. 在cpolar官网预留一个空白隧道2. 完成空白数据隧道,生成地址3. 设置空白隧道的出口4. 空白数据隧道的出口设置5. 获取公网地址6. 打开本地电脑“远程桌面”7. 打开Windows自…

unity打造路径编辑与导航系统

Unity是一款非常流行的游戏引擎,它提供了丰富的工具和API,方便开发者快速创建游戏。其中,路径编辑与导航系统是游戏开发中非常重要的一部分,可以帮助玩家更好地探索游戏世界,提升游戏体验。本文将详细介绍如何在Unity中…

C++对象模型实验(clang虚函数表结构)

摘要:本科期间有对比过msvc,gcc,clang的内存布局,距今已经6-7年了,当时还是使用的c11。时间过得比较久了,这部分内容特别是内存对齐似乎C17发生了一些变化,因此再实践下C类模型。本文描述了C不同…

用easyui DataGrid编辑树形资料

easyui显示编辑树形资料有TreeGrid元件,但是这个元件的vue版本和react版本没有分页功能。virtual scroll功能也表现不佳。 我用DataGrid来处理。要解决的问题点: (1)如何显示成树形。即,子节点如何有缩进。 先计算好…

clickhouse-监控配置

一、概述 监控是运维的一大利器,要想运维好clickhouse,首先就要对其进行监控,clickhouse有几种监控数据的方式,一种是系统本身监控,一种是通过exporter来监控,下面分别描述一下 二、系统自带监控 我下面会对监控做一…

【学习日记】【FreeRTOS】时间片的实现

前言 本文以野火的教程和代码为基础,对 FreeRTOS 中时间片的概念作了解释,并且给出了实现方式,同时发现并解决了野火教程代码中的 bug。 一、时间片是什么 在前面的文章中,我们已经知道任务根据不同的优先级被放入就绪列表中不…

计算机竞赛 python的搜索引擎系统设计与实现

0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 python的搜索引擎系统设计与实现 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分工作量:5分创新点:3分 该项目较为新颖&#xff…

1、攻防世界第一天

1、网站目录下会有一个robots.txt文件,规定爬虫可以/不可以爬取的网站。 2、URL编码细则:URL栏中字符若出现非ASCII字符,则对其进行URL编码,浏览器将该请求发给服务端;服务端会可能会先对收到的url进行解码&#xff0…

深度解读波卡 2.0:多核、更有韧性、以应用为中心

本文基于 Polkadot 生态研究院整理,有所删节 随着波卡 1.0 的正式实现,波卡于 6 月 28 日至 29 日在哥本哈根举办了年度最重要的会议 Polkadot Decoded 2023,吸引了来自全球的行业专家、开发者和爱好者,共同探讨和分享波卡生态的…

ByteV“智农”平台--数字乡村可视化

“智农”平台基于自主可控的数字孪生技术、物联网技术、大数据技术,构建全流程的新型农业一体化管理平台,围绕产运销管理全流程,实现生产->存储->包装->运输->销售的全链条管理。融合农业数据管理、农业数据预警显示、多维数据综…

达梦数据库8用户管理以及忘记sysdba密码修改办法

达梦数据库8用户管理&达梦数据库v8忘记sysdba密码,修改办法。 达梦数据库8用户管理1.创建用户的语法:2.锁定/解锁用户3.修改用户的密码(同样要符合密码策略PWD_POLICY)4.修改用户默认表空间5.删除用户6.同样地可以使用DM管理工具进行创建…

【工具】 删除Chrome安装的“创建快捷方式”

创建Chrome的快捷方式,可以放在桌面,想用时双击就可以打开网页,比书签(brookmark)结构化管理更方便。 但是,安装一时爽,卸载有问题。 如果用 windows 控制面板\所有控制面板项\程序和功能 卸载…

Facebook 应用未启用:这款应用目前无法使用,应用开发者已得知这个问题。

错误:Facebook 应用未启用:这款应用目前无法使用,应用开发者已得知这个问题。应用重新启用后,你便能登录。 「应用未经过审核或未发布」: 如果一个应用还没有经过Facebook的审核或者开发者尚未将应用发布,那么它将无法…

java学习004

常用数据结构对应 php中常用的数据结构是Array数组,相对的在java开发中常用的数据结构是ArrayList和HashMap,它们可以看成是array的拆分,一种简单的对应关系为 PHPJAVAArray: array(1,2,3)ArrayListlArray: array(“name” > “jack”,“…

基于YOLOv8模型和PCB电子线路板缺陷目标检测系统(PyTorch+Pyside6+YOLOv8模型)

摘要:基于YOLOv8模型PCB电子线路板缺陷目标检测系统可用于日常生活中检测与定位PCB线路板瑕疵,利用深度学习算法可实现图片、视频、摄像头等方式的目标检测,另外本系统还支持图片、视频等格式的结果可视化与结果导出。本系统采用YOLOv8目标检…

算法leetcode|72. 编辑距离(rust重拳出击)

文章目录 72. 编辑距离:样例 1:样例 2:提示: 分析:题解:rust:二维数组(易懂)滚动数组(更加优化的内存空间) go:c:python&a…

内网穿透实战应用-windows搭建WebDAV服务,并内网穿透公网访问【无公网IP】

windows搭建WebDAV服务,并内网穿透公网访问【无公网IP】 文章目录 windows搭建WebDAV服务,并内网穿透公网访问【无公网IP】1. 安装IIS必要WebDav组件2. 客户端测试3. cpolar内网穿透3.1 打开Web-UI管理界面3.2 创建隧道3.3 查看在线隧道列表3.4 浏览器访…

设计模式之代理模式(Proxy)的C++实现

1、代理模式的提出 在组件的开发过程中,有些对象由于某种原因(比如对象创建的开销很大,或者对象的一些操作需要做安全控制,或者需要进程外的访问等),会使Client使用者在操作这类对象时可能会存在问题&…

Vue2到3 Day7 全套学习内容,众多案例上手(内付源码)

简介: Vue2到3 Day1-3 全套学习内容,众多案例上手(内付源码)_星辰大海1412的博客-CSDN博客本文是一篇入门级的Vue.js介绍文章,旨在帮助读者了解Vue.js框架的基本概念和核心功能。Vue.js是一款流行的JavaScript前端框架…