7、自定义管理站点

news2024/12/22 22:04:17

目录

  • 1、自定义后台表单
  • 2、添加关联的对象
  • 3、自定义后台更改列表
  • 4、自定义后台界面和风格
    • (1)自定义你的工程的模板
    • (2)自定义你应用的模板

1、自定义后台表单

通过admin.site.register(Question)注册Question模型,Django能够构建一个默认的表单用于展示。一般来讲,我们希望能够自定义表单的外观和工作方式。你可以在注册模型时将这些设置告诉Django。

polls/admin.py:

class QuestionAdmin(admin.ModelAdmin):
    fields = ["pub_date","question_text"]

admin.site.register(Question,QuestionAdmin)

通过以上操作,我们将pub_date参数放在了question_text的前面
在这里插入图片描述
更通常的情况同一个表单有数十个字段,为表单选择一个直观的排序方法就需要更细致地划分
对于拥有数十个字段的表单 我们更倾向于将表单划分为几个字段集

在polls/admin中

# Register your models here.
from django.contrib import admin
from .models import Question

class QuestionAdmin(admin.ModelAdmin):
    # fields = ["pub_date","question_text"]
    fieldsets=[
        (None,{"fields":["question_text"]}),
        ("Data information",{"fields":["pub_date"]}),#“Data information”是字段集的标题
    ]

admin.site.register(Question,QuestionAdmin)

在这里插入图片描述

2、添加关联的对象

此时后台页没有显示多个选项,有两个方法解决

  1. 后台注册Choice
    polls/admin中:
admin.site.register(Choice)

在这里插入图片描述
Question是一个包含数据所有投票的选择框。Django知道要将foreignKey在后台中以选择框< select >的形式展示,此时,我们只有一个投票
在这里插入图片描述
还有一点需要注意,在问题旁边有一个添加按钮,
在这里插入图片描述

这是一种低效的添加“选项”的方法,更好的方法是在你创建“投票”对象时直接添加好几个选项:

  1. 在创建“投票”对象时直接添加好几个选项
    移除调用register()注册Choice模型的代码,修改Question的注册代码:(polls/admin)
class ChoiceInline(admin.StackedInline):#内内联模型管理员类
    model = Choice
    extra = 3#extra 设置了在管理后台中添加新 Choice 对象时显示的空白表单数量,这里设置为 3
class QuestionAdmin(admin.ModelAdmin):
    # fields = ["pub_date","question_text"]
    fieldsets=[
        (None,{"fields":["question_text"]}),
        ("Data information",{"fields":["pub_date"],"classes":["collapse"]}),
    ]#classes 键包含一个类列表,指定这个分组的 CSS 类,这里是 collapse,用于在管理后台中折叠这一部分
    inlines = [ChoiceInline]
    
admin.site.register(Question,QuestionAdmin)

在这里插入图片描述
如果让显示关联的Choice对象的字段占的屏幕空间更小一些会更好:
在这里插入图片描述

3、自定义后台更改列表

对更改列表进行调整,使得其能够展示系统中所有投票的页面
此时的外观为:
在这里插入图片描述
默认情况下,Django显示每个对象的“str()”但是如果能够显示单个字段会更有帮助。为此,我们要使用attr:~django.contrib.ModelAdmin.list_display admin选项,(在对象的更改列表页上以列形式显示的字段名称列表)
polls/admin

class QuestionAdmin(admin.ModelAdmin):
   #...
    list_display = ["question_text","pub_date","was_published_recently"]

在这里插入图片描述
可以在这个方法上 使用display()装饰器来改进,polls/models

class Question(models.Model):
    #...
    @admin.display(
        boolean=True,
        ordering="pub_date",
        description="Published recently"
    )
    def was_published_recently(self):
        now=timezone.now().date()
        return now-datetime.timedelta(days=1) <= self.pub_date <= now

在这里插入图片描述
再次编辑polls/admin 优化Question变更页,允许人们以pub_date字段来过滤列表

    list_filter = ["pub_date"]

在这里插入图片描述
添加功能——搜索

search_fields = ["question_text"]

在这里插入图片描述

4、自定义后台界面和风格

后台显示Django管理有点呆,我们可以通过F=Django的模板系统来修改
在这里插入图片描述

(1)自定义你的工程的模板

  1. 创建一个工程模板目录templates(和manage.py同级)在vote/settings中设置dirs

在这里插入图片描述

  1. 创建templates/admin目录,将django的管理页面模板目录中的模板文件admin/base_site.html复制到该目录中
    查找django源码:py -c "import django;print(django.__path__)"
    在这里插入图片描述
    在这里插入图片描述

  2. 用网页站点的名字编辑文件内的{{ site_header|default:_( ‘Djangoadministration’ ) }}
    在这里插入图片描述
    在这里插入图片描述

所有的Django默认后台模板均可被复写,要复写模板就像我们刚刚那样做就可以——先从默认目录拷贝到自定义目录然后再做修改

(2)自定义你应用的模板

为什么当DIRS为空时,Django也能够找到模板文件呢,因为APP_DIRS被设置为True,Django会自动在每个应用包内递归查找templates目录,而 django/contrib/admin 也是一个目录

我们的投票应用并不复杂,所以无需自定义后台模板

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

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

相关文章

AI自动生成PPT哪个软件好?高效制作PPT优选这4个

7.15初伏的到来&#xff0c;也宣告三伏天的酷热正式拉开序幕~在这个传统的节气里&#xff0c;人们以各种方式避暑纳凉&#xff0c;享受夏日的悠闲时光。 而除了传统的避暑活动&#xff0c;我们还可以用一种新颖的方式记录和分享这份夏日的清凉——那就是通过PPT的方式将这一传…

抖音视频素材去哪里找啊?视频素材网站库分享

在这个视觉盛宴的抖音平台上&#xff0c;高质量和有趣的视频素材常常是吸引观众的重要钥匙。如果你也正在寻找那些能让你的视频作品更加出色的资源&#xff0c;那么恭喜你&#xff0c;今天我将为你介绍10个超实用的视频素材网站&#xff0c;让你的抖音视频创作充满创意和效率。…

只用 CSS 能玩出什么花样?

在前端开发领域&#xff0c;CSS 不仅仅是一种样式语言&#xff0c;它更像是一位多才多艺的艺术家&#xff0c;能够创造出令人惊叹的视觉效果。本文将带你探索 CSS 的无限可能&#xff0c;从基本形状到动态动画&#xff0c;从几何艺术到仿生设计&#xff0c;只用 CSS 就能玩出令…

linux开机后不用登陆,无法正常进入系统,出现:/#的提示符

linux开机后不用登陆&#xff0c;无法正常进入系统&#xff0c;出现:/#的提示符 解决方案&#xff1a; 1、输入命令 ls /dev/mapper 此时会出现3个文件。其中rhel-root文件 是我们下面所要用的文件。 ls的目的就是为了让大家能知道自己带"-root" 文件的前缀是什…

Linux·权限与工具(上)

1. shell命令以及运行原理 Linux严格意义上来说是一个操作系统&#xff0c;我们称之为 "核心(kernel)" &#xff0c;但我们一般的用户不呢个直接使用到核心&#xff0c;因为不会用。所以开发者在核心外面封装了一层 "外壳(shell)" 程序&#xff0c;来与核心…

某安居客滑块验证码

⚠️前言⚠️ 本文仅用于学术交流。 学习探讨逆向知识&#xff0c;欢迎私信共享学习心得。 如有侵权&#xff0c;联系博主删除。 请勿商用&#xff0c;否则后果自负。 网址 aHR0cHM6Ly93d3cuYW5qdWtlLmNvbS9jYXB0Y2hhLXZlcmlmeS8/Y2FsbGJhY2s9c2hpZWxkJmZyb209YW50aXNwYW0 …

数据包的跨层封装

首先&#xff0c;我们先简单地分析一下数据包的组成结构&#xff1a; 如图 数据包简略地分为以下几层&#xff1a; 二层&#xff1a;封装MAC地址&#xff08;数据链路层&#xff09; 三层&#xff1a;封装IP地址 — 表明源IP和目标IP&#xff0c;主要用于路由器之间的信息转发…

SAPUI5基础知识15 - 理解控件的本质

1. 背景 经过一系列的练习&#xff0c;通过不同的SAPUI5控件&#xff0c;我们完成了对应用程序界面的初步设计&#xff0c;在本篇博客中&#xff0c;让我们一起总结下SAPUI5控件的相关知识点&#xff0c;更深入地理解SAPUI5控件的本质。 通常而言&#xff0c;一个典型UI5应用…

FastAPI 学习之路(五十七)校验是否登陆

在之前的分享的中&#xff0c;产生了token&#xff0c;用于做登录的认证&#xff0c;那么产生了token后&#xff0c;登陆携带了token&#xff0c;我们如何校验呢&#xff1f; 先来梳理下逻辑&#xff1a; 1. 调用登录接口&#xff0c;产生token 2.调用依赖登录的接口&#xff…

1.CATIA:CAA调用Excel接口

生成调用Excel的头文件 参考如下进行excel头文件的生成: 如何使用vs2022通过excel.exe生成VC、C++能够使用的头文件 添加如下的接口: #include "CApplication.h" #include "CWorkbook.h" #include "CWorkbooks.h" #include "CWorkshee…

Linux——文件目录指令、时间日期指令、搜索查找指令、压缩解压指令

目录 文件目录指令 pwd & ls 查看当前工作目录&显示当前目录所有文件及目录 cd 切换目录 mkdir & rmdir 创建&删除目录 touch 创建空文件 cp 拷贝文件/文件夹指令 rm 删除文件或文件夹 mv 移动或重命名文件 cat 查看文件 more指令 less 查看文件内容…

驱动LSM6DS3TR-C实现高效运动检测与数据采集(8)----中断获取FIFO数据并应用MotionFX库解析空间坐标

驱动LSM6DS3TR-C实现高效运动检测与数据采集.8--中断获取FIFO数据并应用MotionFX库解析空间坐标 概述视频教学样品申请源码下载开启LED开启INT中断参考驱动程序中断读取传感器数据主程序演示 概述 本文将探讨如何使用中断机制获取FIFO数据并应用MotionFX库解析空间坐标。Motio…

CIS光生电荷

文章目录 CIS基础光电效应光的吸收最大光敏度的计算 CIS基础 CIS光信号转电信号&#xff1a;CIS图像传感器主要用来把直接发射或物体反射的光子组成的图像转换成电信号。在积分时间内&#xff0c;图像传感器吸收光子并记录电信号&#xff0c;确定积分时间内每一个像素接收到的…

昇思25天学习打卡营第15天|munger85

K近邻算法实现红酒聚类 现在数据集这个就是红酒的分类的数据集红酒每一个都会有很多的属性有三个属性下载数据集&#xff0c;这个是红酒的分类的数据集&#xff0c;红酒每一个都会有很多的属性&#xff0c;有三个属性。这十三个属性就可以用来分辨它是哪一个13个属性就可以用来…

【机器学习】Grid Search: 一种系统性的超参数优化方法

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 Grid Search: 一种系统性的超参数优化方法引言什么是Grid Search&#xff1f;Gr…

【机器学习】机器学习与图像分类的融合应用与性能优化新探索

文章目录 引言第一章&#xff1a;机器学习在图像分类中的应用1.1 数据预处理1.1.1 数据清洗1.1.2 数据归一化1.1.3 数据增强 1.2 模型选择1.2.1 卷积神经网络1.2.2 迁移学习1.2.3 混合模型 1.3 模型训练1.3.1 梯度下降1.3.2 随机梯度下降1.3.3 Adam优化器 1.4 模型评估与性能优…

超高性价比降压型DC-DC / YB2419 电源解决方案行业多领域适用

一上车&#xff0c;手机电量告急&#xff0c;这可是出行的大忌! 别急&#xff0c;要知道&#xff0c;在这个快节奏的时代&#xff0c;时间就是金钱&#xff0c;谁也不想在充电这件事上浪费时间。这个时候需要车载充电器来拯救你的电池焦虑症! 还能智能匹配不同手机品牌&#xf…

gltf模型加载 与3d背景贴图

Poly Haveny 用于3d模型跟贴图下载资源 Sketchfab 里面有免费的模型 模型放到public里面 const loader new GLTFLoader()// 加载GLTF模型loader.load(/scene.gltf,(gltf) > {// 将加载的模型添加到场景中scene.add(gltf.scene)// 现在你可以开始渲染循环了let angle …

基于Java的疫情防控期间某村外出务工人员信息管理系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;Java MySQL 工具&#xff1a;Eclipse、MySQL环境配置工具 系统展示 首页 用户管理界面 行程分析…

学懂C语言(四):C语言数据类型

目录 一、数据类型分类 二、存储大小和值范围 三、类型转换 在 C 语言中&#xff0c;数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统。变量的类型决定了变量存储占用的空间&#xff0c;以及如何解释存储的位模式。 一、数据类型分类 C 中的类型可分为以下几…