Django之admin后台页面功能详解

news2024/11/26 13:58:09

一)对于admin的初了解

1.简介

Django是一种流行的Python Web开发框架,它提供了一个功能强大且易于使用的admin界面,用于管理网站的后台数据和功能。Django的admin界面是自动生成的,它根据你的模型类自动创建表单和列表视图。你只需将模型类注册到admin界面,就可以轻松地管理和操作数据库中的数据。
admin界面提供了各种功能,包括:

  1. 列表视图:以表格形式展示数据库中的数据,支持分页、搜索和排序功能,方便快速浏览和筛选数据。
  2. 表单视图:用于创建、编辑和删除数据库中的数据。Django的表单视图提供了丰富的表单字段类型,例如文本框、下拉列表、日期选择等,同时支持数据验证和错误提示。
  3. 权限控制:admin界面支持基于角色的权限控制,你可以定义不同的用户角色,并为每个角色分配不同的权限,从而限制用户对数据和功能的访问权限。
  4. 自定义界面:Django的admin界面可以通过自定义模板和样式进行个性化定制,你可以根据自己的需求修改界面的布局、颜色和图标等。
  5. 插件扩展:Django的admin界面支持插件扩展,你可以通过安装第三方插件来增加额外的功能和特性,例如图表展示、导入导出数据等。

总的来说,Django的admin界面为开发者提供了一个方便、快速和安全地管理和操作后台数据的工具,极大地提高了开发效率和用户体验。无论是小型项目还是大型企业应用,admin界面都是一个不可或缺的组成部分。

2.admin的位置

在我们创建了Django的项目后,我们在最原始的urls.py中就可以看见关于admin的路径:
image.png
如果要访问admin后台我们只需要输入以下网址:

http://127.0.0.1:8000/admin/

页面会自动跳转,读者也可根据自身的需求去改变urls.py中的路径。

二)admin的相关功能

1.创建超级用户

在创建超级用户前我们需要保证项目已经创建成功,连接了数据库并且成功执行力数据库的生成和迁移命令。
在启动Django项目后我们首次进入admin后台管理界面是需要用户名与密码的创建,我们需要在命令终端通过以下命令去创建超级用户,即管理员:

python manage.py createsuperuser

image.png
注意,这里的Password(密码)两次需要输入相同密码,长度至少八个字符(非强制要求),输入的密码不会显现。创建好的超级用户我们可以在auth_user表中看见:
image.png

2.管理界面的本地化

在初次进入admin后台界面的时候我们会发现页面全是英文,有太多的操作不便,我们可以操作控制将admin界面的语言本地化。
image.png
这里有两种方式都可以执行:

  • 在seetings.py文件中将配置项LANGUAGE_CODE的值设置为"zh-Hans",TIME_ZONE的值设置为"Asia/Shanghai"

image.png

  • 在seetings.py文件中配置项MIDDLEWARE(中间件)中添加本地化中间件"django.middleware.locale.LocaleMiddleware"

image.png
两种方式各有千秋,如果只是想要用本地语言来运行Django,并且该语言的语言文件存在,只需要第一种方式即可。如果要让每一个使用者各自指定语言偏好,就需要使用第二种方式。LocaleMiddleware 使得Django基于请求的数据进行语言选择,从而为每一位用户定制内容。它为每一个用户定制内容。
image.png

3.有关模型类

a.模型类的创建与注册

模型类的创建在前文《Django之ORM操作初了解》已经讲过,感兴趣的读者可以翻看前文,这里将给出一个例子给大家参考:

#借阅人模型
class taker(models.Model):
      taker_name = models.CharField(verbose_name="借阅人姓名",max_length=20,unique=True)
      taker_number = models.IntegerField(verbose_name="借阅人ID",default='0000')
      taker_identity = models.CharField(verbose_name="借阅人身份",choices=(("0","学生"),("1","教师")),max_length=20,default="0")

我们如果想要将其在admin后台显现处理啊,就需要在应用的admin.py文件中将其注册到后台,在这里同样也有两个方式将其注册:

  • 装饰器:
from django.contrib import admin
from .models import Goods

@admin.register(Goods)
class xxx

一般需要操作展示数据或者定制时会使用此方式注册,不是很好理解是吧,给大家一个具体的例子:

@admin.register(taker)
class TakerAdmin(ImportExportModelAdmin):
    list_display = ("taker_name","taker_number","taker_identity")
    search_fields = ("taker_name","taker_number")

这里的xxx也就是我们在models.py中创建的类的名字,而之后如果我们想要控制这个类展现怎样的数据和其他功能的自定义我们就需要用装饰器的方式。

  • 使用admin.site.register()注册模型
# 语法 admin.site.register(模型名)
admin.site.register(xxxx)

同样,这里的xxxx也是我们在models.py中创建的类的名字,如果我们没有什么需要自定义的就只需要用这个方式注册模型。
注册了之后我们就可以在admin界面上查看到数据:
image.png

b.修改展示的名称

image.png
这样的模型名称与应用名称很不好让人理解,我们可以根据实际的情况修改。
我们先修改应用的名称,我们需要在应用的init.py文件中添加如下代码:

default_app_config = 'xxxx.apps.xxxxConfig'

这里的xxxx是应用的名称,apps是应用的包路径,而xxxxConfig是应用的配置类。
然后我们在应用的apps.py文件中使用verbose_name设置应用的名称:

from django.apps import AppConfig
class xxxxConfig(AppConfig):
	name = 'xxxx'
	verbose_name = '商品信息'

这里的xxxx意义相信大家都知道,而verbose_name中的就是我们需要展示出来的名称。
同样,修改模型名称也很简单,我们只需要在models.py文件中操作,如下:

from django.db import models
# Create your models here.
class xxxx(models.Model):
    ...
	class Meta:
		verbose_name = '商品' # 模型名称(单数)
		verbose_name_plural = verbose_name # 模型名称(复数)

请注意Meta的缩进,其被我们的模型类所包括,在这使用verbose_name等命令去控制显示的名称:
image.png

c.数据的增删查改

我们的admin页面是自己携带了增删查改的界面,我们只需要去跟着操作就行,例如增加数据:
image.png
这里的操作数据库会自动同步,完全不用担心是否会造成数据混乱的问题。

d.定制列表页数据

前面我提到过,可以自定义展示的数据与功能,这里我简单给大家一些选项:

代码功能
list_display展示的数据字段
search_fields搜索的数据字段
list_filter过滤的数据字段
ordering排序的数据字段
exclude不显示的数据字段

那么如何使用呢,只需要在应用的admin.py文件中进行:

@admin.register(book)
class BookAdmin(admin.ModelAdmin):
    # 页面上展示的内容
    list_display = ("book_name","author", "book_price")

当然,也可用另外一个方式:

class BookAdmin(admin.ModelAdmin):
        list_display = ('id','name', 'price', 'stock', 'sales', 'create_time', 'update_time')


admin.site.register(Book,BookAdmin)

当然,我个人较为推荐第一种方式,从我主观的角度来看较为清晰代码的解构。
image.png

e.定制编辑页数据

如果数据的展示我们可以自定义功能,那么编辑数据的编辑页我们自然也可控制,这里也给大家举一些例子:

代码功能
fields显示的数据字段;
支持以二维元组形式设置字段分栏显示,在fileds中一个元组表示一栏数据
fieldsets对可编辑的数据字段分组;
不可与fields一起用
readonly_fields只读的数据字段
save_on_top设置在这编辑页上面是否展现保存、删除等按钮,默认为False,不显示

f.自定义字段

自定义字段指与模型相关,但并不包含在模型中的字段,这种字段是定义在应用的admin.py文件中的一些函数,这些函数会将模型实例作为参数。也就是说假如我们类里设置了商品的单价与销售的数量,但是我们没有设置其销售额,该如何得到?利用自定义字段就可以解决:

def sales_volume(g):
     total = g.price * g.sales
     return f'{g.name}销售额为:{total}'
   
   
sales_volume.short_description = '商品销售额' # 设置字段描述


@admin.register(Goods)
class GoodsAdmin(admin.ModelAdmin):
     list_display = ('name', 'price', 'stock', 'sales', 'create_time', 'update_time',sales_volume)

4.认证与授权

Admin提供管理用户与组、用户与组权限的功能,使用超级用户登录后台管理系统后可以对用户或组进行增加,或变更用户与组的权限。
image.png
image.png

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

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

相关文章

移除元素、合并两个有序数组(leetcode)

一、移除元素 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 思路一: 比较好想到,但是时间复杂度为O(n^2)。 思路:把每一个数组中的元素与val比较,比较后若元素等于val&#…

vue3 + mark.js 实现文字标注功能

效果图 安装依赖 npm install mark.js --save-dev npm i nanoid代码块 <template><!-- 文档标注 --><header><el-buttontype"primary":disabled"selectedTextList.length 0 ? true : false"ghostclick"handleAllDelete"…

2024年网络安全比赛--系统渗透测试(超详细)

一、竞赛时间 180分钟 共计3小时 二、竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 1.在渗透机中对服务器主机进行信息收集&#xff0c;将服务器开启的端口号作为 Flag 值提交; 2.在渗透机中对服务器主机进行渗透&#xff0c;在服务器主机中获取服务器主机名称&#xff…

履带吊,笔记

0.前言 履带吊使用了与传统的门桥式起重机不同的技术路线。因为它是移动式设备&#xff0c;所以它的动力是燃油发动机。为了精确调控升降。它的整套动力系统似乎采用了某种液压传动系统。履带吊国内也有生产商。但是下文中&#xff0c;还是从国外的一款产品说起。这款产品的pd…

K8S pod无损上下线

在最近的K8s服务上线过程中&#xff0c;我发现了一些问题&#xff0c;更具体的说&#xff0c;我在使用阿里云k8s的过程中注意到&#xff1a;会出现slb短时RT增加&#xff0c;Pod部署初期就达到了扩容上限&#xff0c;并且开始大量的扩容&#xff0c;这无疑占用了大量的k8s资源。…

ardupilot开发 --- ROS 与 Ardupilot 篇

1. ROS 与 Ardupilot ArduPilot功能可以通过ROS进行扩展&#xff1b;推荐使用ROS Noetic 版本&#xff0c;而非ROS2&#xff1b;对于ROS2&#xff0c;目Humble是唯一支持的ROS2版本&#xff1b; 2. ROS with SITL 系统环境&#xff1a;win11&#xff0c;wsl2&#xff0c;Ubu…

C //例10.2 将一个磁盘文件中的信息复制到另一个磁盘文件中。

C程序设计 &#xff08;第四版&#xff09; 谭浩强 例10.2 例10.2 将一个磁盘文件中的信息复制到另一个磁盘文件中。 IDE工具&#xff1a;VS2010 Note: 使用不同的IDE工具可能有部分差异。 代码块 方法&#xff1a;使用指针&#xff0c;函数的模块化设计&#xff0c;动态分…

Java多线程:代码不只是在‘Hello World‘

Java线程好书推荐 概述01 多线程对于Java的意义02 为什么Java工程师必须掌握多线程03 Java多线程使用方式04 如何学好Java多线程写在末尾&#xff1a; 主页传送门&#xff1a;&#x1f4c0; 传送 概述 摘要&#xff1a;互联网的每一个角落&#xff0c;无论是大型电商平台的秒杀…

【离散数学】——期末刷题题库(等价关系与划分)

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

“无忧文件安全!上海迅软DSE文件加密软件助您轻松管控分公司数据!

许多大型企业集团由于旗下有着分布在不同城市的分支机构&#xff0c;因此在规划数据安全解决方案时&#xff0c;不适合采用市面上常见的集中式部署方式来管控各分部服务器&#xff0c;而迅软DSE文件加密软件支持采用分布式部署的方式来解决这一问题。 企业用户只需在总部内部署…

【Proteus仿真】【STM32单片机】简易计算器

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真STM32单片机控制器&#xff0c;使动态数码管、矩阵按键、蜂鸣器等。 主要功能&#xff1a; 系统运行后&#xff0c;数码管默认显示0&#xff0c;输入对应的操作数进行四则运算&…

Java爬虫攻略:应对JavaScript登录表单

问题背景 在进行网络抓取数据时&#xff0c;经常会遇到需要登录的网站&#xff0c;特别是使用JavaScript动态生成登录表单的情况。传统的爬虫工具可能无法直接处理这种情况&#xff0c;因此需要一种能够模拟用户行为登录的情况解决方案。 在实际项目中&#xff0c;我们可能需要…

⭐Unity 搭建UDP客户端(01) 配合网络调试助手测试

1.接收来自服务器的消息 using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; using UnityEngine;public class UDPManager:MonoBehaviour {public string recvStr; //服务器返回值public string UDPClientAddRess "192.168.2.39&q…

高速风筒解决方案,基于高性价比的普冉单片机开发

高速风筒也就是高速吹风机&#xff0c;与传统的吹风机相比&#xff0c;高速吹风机具有更强大的风力和更快的干燥速度&#xff0c;可以更快地干燥头发或其他物体表面的水分。它通常由一个电动机驱动&#xff0c;并通过旋转的叶片来产生气流。高速风筒广泛应用于个人护理、美容、…

低代码平台和数据中台存在异曲同工之妙

低代码开发是近年来迅速崛起的软件开发方法&#xff0c;让编写应用程序变得更快、更简单。有人说它是美味的膳食&#xff0c;让开发过程高效而满足&#xff0c;但也有人质疑它是垃圾食品&#xff0c;缺乏定制性与深度。你认为低代码到底是美味的膳食还是垃圾食品呢&#xff0c;…

常见动物经济手术3d模拟交互演示教学实现了教育资源的共享

动物常见病防治是兽医必备的技能&#xff0c;为了让实习兽医在上岗作业前拥有丰富的常见病防治经验。借助动物常见病防治VR虚拟仿真技术开展动物常见病防治VR模拟实操培训&#xff0c;能极大方便院校实训。 提高教学质量 传统的动物医学教学往往依赖于理论知识和实验室实践&…

Ngxin实现301重定向映射

要实现将abc.love域名映射到http://baidu.com网站&#xff0c;并进行重定向&#xff0c;你需要在Nginx的配置文件中添加一个新的server块&#xff0c;如下所示&#xff1a; server {listen 80;server_name abc.com; #替换成自己的域名&#xff0c;记得要映射到这台服务器&…

来了!轻量对象存储重磅上线

轻量对象存储 Lighthouse-COS 是腾讯云专为中小企业开发者打造的轻量级数据存储服务&#xff0c;适用于云端网站、小程序、课堂演示、云盘/图床等场景下的数据存储和处理任务。针对图像、音视频等对象类型数据进行可视化一键管理。相比传统的对象存储服务更加开箱即用&#xff…

2024黑龙江省职业院校技能大赛信息安全管理与评估样题第二三阶段

2024黑龙江省职业院校技能大赛暨国赛选拔赛 "信息安全管理与评估"样题 *第二阶段竞赛项目试题* 本文件为信息安全管理与评估项目竞赛-第二阶段试题&#xff0c;第二阶段内容包括&#xff1a;网络安全事件响应、数字取证调查和应用程序安全。 极安云科专注技能竞赛…

CCF编程能力等级认证GESP—C++1级—20230611

CCF编程能力等级认证GESP—C1级—20230611 单选题&#xff08;每题 2 分&#xff0c;共 30 分&#xff09;判断题&#xff08;每题 2 分&#xff0c;共 20 分&#xff09;编程题 (每题 25 分&#xff0c;共 50 分)时间规划累计相加 答案及解析单选题判断题编程题1编程题2 单选题…