Django之admin后台页面功能详解

一)对于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.salesreturn 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.hqwc.cn/news/256217.html

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

相关文章

【科普】什么是电子印章? PS抠的印章能用吗?

各类扣章教程一搜一大堆,说明大家对于电子印章使用需求很高。不过要谨记,不要随便抠印章用于公文、证明书、合同协议、收据发票等电子文件,否则可能会吃牢饭。 单是一张电子化的图片是不具备合法性的。那有的人就要问了,我见到的…

掌汇云 | 全场景数据追踪,多维了解用户偏好,提高运营效率

掌汇云拥有黄金“三件套”:掌头条、汇互动、云品牌。群硕借助这些功能套件,面向细分领域如:会展,食品饮料、医药以及工业等,定制综合性信息服务平台,提供资讯、商机、企业人脉、上下游资源、活动等高质量服…

(分类)KNN算法- 参数调优

在此专栏的上一篇文章的基础上,进行交叉实验获取最佳的K值 上一篇文章:KNN算法案例-鸢尾花分类 数据拆分的过程: 交叉验证(Cross Validation) 是一种在机器学习中广泛使用的模型评估和参数调优方法。在训练模型时&…

Linux存储软件栈到底有多复杂,存储软件栈全景概览

从今天开始,我们将介绍一下Linux的存储软件栈,也称为IO栈。今天我们先从整体上了解一下Linux的整个IO栈,后续再深入介绍每个组件。我们很难说清楚Linux的存储软件栈到底有多复杂,但thomas-krenn的一张图可能可以给大家一个比较直观…

短视频文案生成器有哪些?【2024新版短视频文案生成器】

在当今数字化社交时代,短视频已经成为人们生活中不可或缺的一部分。然而,想要制作引人注目、独具创意的短视频,光有精彩的画面和音效可能不够,一个吸引眼球的短视频文案也是至关重要的。本文将专心分享短视频文案生成器的种类&…

python pydoc生成API文档

pydoc是python内置的一个文档生成模块。 pydoc 模块会根据 Python 模块来自动生成文档。 生成的文档可在控制台中显示为文本页面,提供给 Web 浏览器访问或者保存为 HTML 文件。 对于模块、类、函数和方法,显示的文档内容取自文档字符串(即 _…

通信原理 计网

串行通信是指使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。其只需要少数几条线就可以在系统间交换信息,特别使用于计算机与计算机、计算机与外设之间的远距离通信。 同步通信 —— 严格时钟同步 ——— 连续串…

html电子签名

html电子签名 html5实现手写签名板&#xff0c;点击保存即可生成base64格式的图片 使用H5自带的canvas&#xff0c;无需引入js无需引入别的js 效果图 html代码 <!DOCTYPE html> <html> <head><meta http-equiv"Content-Type" content"…

nfs高可用部署(lsyncd两主机双向同步)

nfs高可用部署 1. 工具简介 1.1. rsync ​ rsync&#xff08;remote synchronize&#xff09;是 Liunx/Unix 下的一个远程数据同步工具&#xff0c;它可通过 LAN/WAN 快速同步多台主机间的文件和目录。rsync 通过比较两边文件是否相同&#xff0c;不相同才进行更新。 ​ 但是…

【HarmonyOS开发】DevEco Studio安装及其配置

目录 前言下载工具准备开始安装配置开始新建一个项目 前言 DevEco Studio是一款用于开发HarmonyOS应用的集成开发环境&#xff0c;在安装DevEco Studio的时候&#xff0c;可能会在安装或者配置的时候出现各种各样的小问题&#xff0c;在此做下记录。 下载工具准备 官网下载地…

springboot集成docker

1、快速构建springboot-demo项目 地址&#xff1a;https://start.spring.io/

计算机msvcr71.dll丢失的解决方法,总结3个有效的方法

在计算机使用过程中&#xff0c;我们常常会遇到一些错误提示&#xff0c;其中之一就是“msvcr71.dll丢失”。这个问题通常是由于系统文件损坏或缺失引起的&#xff0c;会导致某些程序无法正常运行。那么&#xff0c;msvcr71.dll到底是什么呢&#xff1f;它又有什么作用&#xf…