当前位置: 首页 > news >正文

【Python】【进阶篇】21、Django Admin数据表可视化

目录

  • 21、Django Admin数据表可视化
    • 1. 创建超级用户
    • 2. 将Model注册到管理后台
        • 1)在admin.py文件中声明
    • 3. django_admin_log数据表

21、Django Admin数据表可视化

在《Django Admin后台管理系统》介绍过 Django 的后台管理系统是为了方便站点管理人员对数据表进行操作。Django 的 ORM 模块提供了丰富的 API 用于实现对 Model 的增删改查,但是对于 Web 站点的管理运营人员来说,学习它们的成本较高,且误操作的可能性较大。当然开发人员自己也可以去构建管理界面,但是当系统越来越复杂,Model越来越多的时候, 就会增加很多重复性的工作。

综上所述,Django 完全考虑到了这些问题,它可以让开发人员几乎不用写代码就能拥有一个功能强大的 Model 管理后台。下面我们一起来学习 Django 提供的这个强大功能。

1. 创建超级用户

我们是使用在《Django Admin后台管理系统》中提到过的命令创建超级管理员账户,命令如下所示:

python manage.py createsuperuser --username=admin --email=admin@163.com

这里将用户名设置为 admin,邮箱设置为 admin@163.com,也可以根据自己的需要去修改。如果在 createsuperuser 后面不加任何内容,Django 会提示用户输入用户名和邮箱。当前命令执行后,需要重复输入两次密码,密码可以根据自己的需要设置,但是密码不能过于简单,如下图所示,表示创建成功:

在这里插入图片描述

图1:创建超级用户admin

提示:超级用户拥有所有权限,方便技术人员或非技术人员以可视化的形式对应用数据记录实现增删改查的操作。

在 CMD 命令行工具启动 BookStore 项目,然后在浏览器地址栏输入 127.0.0.1:8000/admin 访问,输入刚刚创建的超级用户名以及密码进行登录。如下所示登录成功:

在这里插入图片描述

图2:Admin后台超级用户登录

2. 将Model注册到管理后台

1)在admin.py文件中声明

那么如何把自定义的数据表 Model 注册到管理后台呢?也就是说要把 Model 显示在 Admin 后台管理系统界面,需要做哪些操作呢?当我们使用
startapp 命令创建 index 应用的时候会自动创建 admin.py 文件,想要把自定义的 Model 注册到管理后台,就需要在 admin.py
文件中进行声明,添加如下代码:

from django.contrib import admin #Django自动在admin.py文件中导入
from index.models import Book, Author,UserInfo #这个需要我们自己导入相应的模型类(数据表)
admin.site.register([Book,Author,UserInfo])

通过上述代码,我们就完成了将 Model 注册到后台管理系统的操作,其实实现的过程也非常的简单,首先通过 django.contrib 的标准库引入 admin 应用,然后把 index 应用下我们自定义的三张数据表引入,最后我们调用 admin.site.register()方法实现模型类的注册。多个模型类一起注册我们使用列表的形式来统一注册,如果是单一的模型类注册,我们可以使用以下方式即可:

admin.site.register(Book)

至此我们就完成了数据表在 Admin后台管理系统的可视化操作,我们再次使用ctrl+F5刷新后台管理系统的显示页面,可以得到如下结果:

在这里插入图片描述

图3:admin 后台数据表可视化

提示:在图 3 中,每张数据表的名字都加上了 s ,这是 Django 自动设定的,我们可以通过相应的修改将其去掉,在后续章节我们将介绍。

虽然看似页面简单并且没有太多的附加功能,但是对于简单的增删改操作而言已经足够使用了。我们打开其中的 UserInfos 数据表来查看,如下所示:

在这里插入图片描述

图4:admin后台数据表可视化

点击增加 USERI INFO 按钮会得到如下页面,在此页面我们可以进行数据的添加、编辑、保存操作:

在这里插入图片描述

图5:admin后台数据表可视化

上图中提到的问题,其实只需要我们在自定义的模型类中添加上一个字段选项 verbose_name 就可以修改了,小伙伴们可以自己修改一下。

3. django_admin_log数据表

Admin 应用在数据库迁移的过程中只创建了 django_admin_log 一张表 ,用于记录通过管理后台完成的对 Model
的增删改操作,如下所示,是数据库迁移过程中生成的所有数据表:

mysql> show tables;
+----------------------------+
| Tables_in_bookstoredb      |
+----------------------------+
| auth_group                 |
| auth_group_permissions     |
| auth_permission            |
| auth_user                  |
| auth_user_groups           |
| auth_user_user_permissions |
| django_admin_log           |
| django_content_type        |
| django_migrations          |
| django_session             |
| index_author               |
| index_book                 |
| index_userinfo             |
+----------------------------+
13 rows in set (0.00 sec)

我们可以使用desc命令查看 django_admin_log 表结构, 如下所示:

mysql> desc django_admin_log;
+-----------------+----------------------+------+-----+---------+----------------+
| Field           | Type                 | Null | Key | Default | Extra          |
+-----------------+----------------------+------+-----+---------+----------------+
| id              | int(11)              | NO   | PRI | NULL    | auto_increment |
| action_time     | datetime(6)          | NO   |     | NULL    |                |
| object_id       | longtext             | YES  |     | NULL    |                |
| object_repr     | varchar(200)         | NO   |     | NULL    |                |
| action_flag     | smallint(5) unsigned | NO   |     | NULL    |                |
| change_message  | longtext             | NO   |     | NULL    |                |
| content_type_id | int(11)              | YES  | MUL | NULL    |                |
| user_id         | int(11)              | NO   | MUL | NULL    |                |
+-----------------+----------------------+------+-----+---------+----------------+
8 rows in set (0.01 sec)

这些字段含义只做简单了解即可,如下所示:

  • id 是自增的主键字;

  • action_time:datetime 类型,保存操作发生的日期和时间;

  • object_id:longtext 类型,保存修改对象的主键;

  • object_repr:varchar 类型,保存修改后的对象执行 repr 函数的值,repr 是 Python 的内置函数,用于将对象转换为字符串;

  • action_flag:无符号 smallint 类型,用于记录操作类型 ADDITION(值为1,表示添加)、CHANGE(值为 2,表示更新)、DELETION(值为 3,表示删除);

  • change_message:longtext 类型,用于保存修改对象的详细描述;

  • content_type_id:int 类型,外键关联 ContentType 对象;

  • user_id:int类型,外键关键User对象(默认值),记录执行操作的用户。

本节我们在 Admin 后台管理系统实现了数据表的可视化,通过这个功能我们就可以对数据表进行管理,极大的方便了 Web 站点的管理人员。

相关文章:

【Python】【进阶篇】21、Django Admin数据表可视化

目录 21、Django Admin数据表可视化1. 创建超级用户2. 将Model注册到管理后台1)在admin.py文件中声明 3. django_admin_log数据表 21、Django Admin数据表可视化 在《Django Admin后台管理系统》介绍过 Django 的后台管理系统是为了方便站点管理人员对数据表进行操作。Django …...

【MySQL约束】数据管理实用指南

1、数据库约束的认识 数据库约束的概念:数据库的约束是关系型数据库的一个重要的功能,它提供了一种“校验数据”合法性的机制,能够保证数据的“完整性”、“准确性”和“正确性” 数据库的约束: not null:不能存储 nul…...

2023年第二十届五一数学建模竞赛C题:“双碳”目标下低碳建筑研究-思路详解与代码答案

该题对于模型的考察难度较低,难度在于数据的搜集以及选取与处理。 这里推荐数据查询的网站:中国碳核算数据库(CEADs) https://www.ceads.net.cn/ 国家数据 国家数据​data.stats.gov.cn/easyquery.htm?cnC01 以及各省市《统…...

Vue父组件生命周期和子组件生命周期触发顺序

加载渲染过程 父 beforeCreate -> 父 created -> 父 beforeMount -> 子 beforeCreate -> 子 created -> 子 beforeMount -> 子 mounted -> 父 mounted子组件更新过程 父 beforeUpdate -> 子 beforeUpdate -> 子 updated -> 父 updated父组件更新…...

DevOps工程师 - 面试手册

DevOps工程师 - 面试手册 岗位概述 DevOps工程师是一种专注于提高软件开发和运维团队协作、提高软件产品交付速度和质量的职位。这种角色要求具备跨领域的知识,以便在开发和运维过程中建立起稳定、可靠的基础设施和自动化流程。 常见的职位招聘描述 负责设计、实…...

Netty内存管理--内存池空间规格化SizeClasses

一、规格化 内存池类似于一个内存零售商, 从操作系统中申请一整块内存, 然后对其进行合理分割, 将分割后的小内存返回给程序。这里存在3个尺寸: 分割尺寸: 底层内存管理的基本单位, 比如常见的以页为单位分配, 但是页的大小是灵活的;申请尺寸: 内存使用者希望申请到的内存大小…...

数据结构刷题(三十):96不同的二叉搜索树、01背包问题理论、416分割等和子集

一、96. 不同的二叉搜索树 1.这个题比较难想递推公式, dp[3],就是元素1为头结点搜索树的数量 元素2为头结点BFS的数量 元素3为头结点BFS的数量 元素1为头结点搜索树的数量 右子树有2个元素的搜索树数量 * 左子树有0个元素的搜索树数量 元素2为头结…...

bash的进程与欢迎讯息自定义

在bash shell中,可以通过多种方式自定义欢迎讯息和提示符。主要有: 修改/etc/profile文件: 该文件在用户登录后执行,定义了PROMPT_COMMAND和PS1提示符。可以修改其内容实现自定义欢迎讯息和提示符。 例如,修改为: bash PROMPT_COMMANDecho -e "\nWelcome to My Bash She…...

本周大新闻|苹果首款MR没有主打卖点;Meta认为AI是AR OS的基础

​本周XR大新闻,AR方面,苹果首款MR或没有主打卖点,反而尽可能支持更多App和服务;扎克伯格表示基于AI的AR眼镜操作系统是下一代计算平台的基础;微软芯片工程VP Jean Boufarhat加入Meta芯片团队;Humane展示了…...

Java中工具类Arrays、Collections、Objects

Arrays Arrays是Java中提供的一个针对数组操作的工具类,所有的方法都是静态的。 大致有这些常用的方法 sort()针对常用的基本数据类型,都能进行排序,byte、char、int、long、float、doubleparallelSort()并行排序,多线程排序&am…...

Docker安装Nginx/Python/Golang/Vscode【亲测可用】

一、docker安装nginx docker安装nginx,安装的是最新版本的:docker pull nginx:latest 创建一个容器:docker run --name my-nginx -p 80:80 -d nginx:latest 开启一个交互模式终端:docker exec -it my-nginx bash 创建django项…...

蓝桥杯2022年第十三届决赛真题-最大数字

蓝桥杯2022年第十三届决赛真题-最大数字 时间限制: 3s 内存限制: 320MB 题目描述 给定一个正整数 N。你可以对 N 的任意一位数字执行任意次以下 2 种操作: 将该位数字加 1。如果该位数字已经是 9,加 1 之后变成 0。 将该位数字减 1。如果该位数字已经…...

smbms项目搭建

目录 1.搭建一个maven web项目 2.配置Tomcat 3.测试项目是否能够跑起来 4.导入项目中会遇到的Jar包 5.项目结构搭建 6.项目实体类搭建 7.编写基础公共类 1.数据库配置文件 2.编写数据库的公共类 3.编写字符编码过滤器 3.1web配置注册 4.导入静态资源 1.搭建一个maven web项目 …...

进程/线程 状态模型详解

前言:最近操作系统复习到线程的状态模型(也可以说进程的状态模型,本文直接用线程来说)时候,网上查阅资料,发现很多文章都说的很不一样,有五状态模型、六状态模型、七状态模型.......虽然都是对的…...

数据结构与算法之队列: Leetcode 621. 任务调度器 (Typescript版)

任务调度器 https://leetcode.cn/problems/task-scheduler/ 描述 给你一个用字符数组 tasks 表示的 CPU 需要执行的任务列表。其中每个字母表示一种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完。在任何一个单位时间&#…...

【报错】arXiv上传文章出现XXX.sty not found

笔者在overleaf上编译文章一切正常,但上传文章到arxiv时出现类似于如下报错: 一般情况下观察arxiv的编译log,不通过的原因,很多时候都是由于某一行导入了啥package,引起的报错;但是如果没有任何一个具体的…...

项目合同管理

项目合同管理的基本概念及分类、项目合同签订、项目合同管理以及项目合同索赔处理等内容 信息系统工程的建设过程实际上就是合同的执行和监控的过程 1、项目合同的概念及分类 合同法律关系:权力和义务关系 合同可以是书面形式、口头形式和其他形式 书面形式是指…...

聊聊ClickHouse向量化执行引擎-过滤操作

俄罗斯Yandex开发的ClickHouse是一款性能黑马的OLAP数据库,其对SIMD的灵活运用给其带来了难以置信的性能。本文我们聊聊它如何对过滤操作进行SIMD优化。 基本思想 1、有一个数组data,即ColumnVector::data,存放数据 2、使用uint8类型&#xf…...

数据可视化第二版-拓展-网约车分析案例

文章目录 数据可视化第二版-拓展-网约车分析案例竞赛介绍 1等奖作品-IT从业者张某某的作品结论过程数据和思考数据处理数据探索数据分析方法选择数据分析相关性分析转化率分析分析结论 完单数量分析分析结论 司机数量分析分析结论 时间分析每日订单分析 工作日各时段分析周六日…...

pytest - Getting Start

前言 项目开发中有很多的功能,通常开发人员需要对自己编写的代码进行自测,除了借助postman等工具进行测试外,还需要编写单元测试对开发的代码进行测试,通过单元测试来判断代码是否能够实现需求,本文介绍的pytest模块是…...

Photon引擎:基于Vite与Rust工具链的极速Web开发体验

1. 项目概述:一个为现代Web开发提速的“光子”引擎最近在GitHub上看到一个挺有意思的项目,叫portel-dev/photon。光看名字“光子”,你可能会联想到速度、轻量、能量这些概念。没错,这个项目给我的第一印象就是如此。它不是另一个臃…...

PrompTrek:统一AI编程助手配置,实现一次编写、处处运行

1. 项目概述:告别AI编辑器配置的“巴别塔”如果你和我一样,日常开发需要在GitHub Copilot、Cursor、Continue、Claude Code这些AI编程助手之间来回切换,那你一定体会过那种“配置地狱”的痛苦。每个编辑器都有自己的一套提示词(Pr…...

AI Agent自动化求职实战:基于Python与LLM的智能简历投递系统

1. 项目概述与核心价值最近在技术社区里,关于AI Agent如何自动化处理重复性工作的讨论越来越热。作为一个在招聘和自动化领域摸爬滚打了十来年的老手,我亲眼见证了求职者从海投简历到使用各种工具辅助的演变。今天想和大家深入聊聊一个让我印象深刻的开源…...

别再刷后台了!我用凌风工具箱导出竞价表格,摸清所有对手底牌

做Temu一年多,我最怕的不是报不上活动,不是物流延迟,而是——竞价。每次打开商家后台的竞价管理页面,看着密密麻麻的商品列表和不断跳动的竞价倒计时,心里就开始发慌。哪个品该竞价、哪个该守住、哪个该放弃&#xff1…...

TVA重塑智慧城市安防新范式(7)

重磅预告:本专栏将独家连载新书《AI视觉技术:从入门到进阶》精华内容。本书是《AI视觉技术:从进阶到专家》的权威前导篇,特邀美国 TypeOne 公司首席科学家、斯坦福大学博士 Bohan 担任技术顾问。Bohan先生师从美国三院院士、“AI教…...

Pytorch图像去噪实战(五十六):配置覆盖机制实战,用命令行快速修改YAML实验参数

Pytorch图像去噪实战(五十六):配置覆盖机制实战,用命令行快速修改YAML实验参数 一、问题场景:每次改学习率都要复制一个YAML文件 前面我们已经用 YAML 管理图像去噪实验。 但实际调参时会遇到新问题: unet_lr1e-4.yaml unet_lr2e-4.yaml unet_bs4.yaml unet_bs8.yaml …...

ARM架构特权级别与安全监控机制解析

1. ARM架构特权级别与安全监控机制解析在ARMv8/v9架构中,异常级别(EL)构成了系统安全的基础隔离机制。EL3作为最高特权级别,承担着安全监控器(Secure Monitor)的关键角色。不同于EL0/1/2主要处理应用、操作系统和虚拟化需求,EL3专门负责安全世…...

Decantr:AI生成UI的设计智能治理工具,解决前端一致性难题

1. 项目概述与核心价值如果你和我一样,在过去一年里深度使用过 Claude Code、Cursor 或者 Windsurf 这类 AI 编程助手来构建前端界面,那你一定经历过那种“甜蜜的烦恼”:助手能快速生成一个漂亮的登录页面,但当你让它接着做用户仪…...

谷歌Gmail客户端升级:新增AI Inbox入口,‘Help me write’功能深度进化

谷歌Gmail客户端:新增AI Inbox快捷入口品玩5月9日消息,据9to5google报道,谷歌在Gmail安卓及iOS客户端底部导航栏新增了“AI Inbox”快捷入口。此入口位于“Gmail”与“Chat”之间,用户点击后可进入以任务为核心的邮件视图。该视图…...

AI 时代为什么所有人都在用 Markdown 写东西

如果你最近开始频繁用 AI 工具,会发现一个现象:不管是 ChatGPT 还是其他大模型,输出的内容几乎都是 Markdown 格式——标题用 #,重点用 **,代码用反引号包起来。 Markdown 是一种轻量级的标记语言,1.0 版本…...