Login
网站首页 > 文章中心 > 其它

详解Django_admin高级用法

作者:小编 更新时间:2023-08-16 18:50:23 浏览量:238人看过

Django admin是Django自带的管理员后台管理系统,可以方便地进行数据库管理,数据展示,数据处理等功能.本文将详细讲解如何使用Django admin的高级用法.

1. 自定义管理器

在Django admin中,如果希望对某个Model进行管理时,需要先创建一个管理器类,例如:

from django.contrib import admin
from .models import Author

class AuthorAdmin(admin.ModelAdmin):

pass

admin.site.register(Author, AuthorAdmin)

这里创建了一个AuthorAdmin类,继承了admin.ModelAdmin类,并将Author和AuthorAdmin进行了注册,这样我们就可以在Django admin中管理Author的数据了.

但是,有时候我们可能需要对数据进行一些特殊处理,比如只让管理员看到某个字段,只有某些用户才有权限对某个Model进行管理等操作.这时候就需要自定义管理器了.

1.1 隐藏字段

有时候某个Model中有敏感数据,不希望普通管理员看到,可以通过自定义管理器隐藏掉该字段:

class AuthorAdmin(admin.ModelAdmin):
exclude = ('email',)

这样管理员在Django admin中就看不到email字段了.

1.2 只读字段

有时候某个Model中有重要数据,只允许查看,不允许修改,可以通过自定义管理器将该字段设置为只读:

class AuthorAdmin(admin.ModelAdmin):
readonly_fields = ('name',)

这样管理员在Django admin中可以看到name字段,但是不能修改.

1.3 重写默认查询方法

如果默认的查询方法无法满足我们的需求,可以通过自定义管理器重写查询方法.例如,我们希望只显示未删除的数据:

class AuthorAdmin(admin.ModelAdmin):
    return qs

这样在Django admin中就只会显示is_deleted为False的数据了.

2. 自定义Django admin页面

Django admin默认使用Bootstrap样式,但是有时候我们可能需要自定义页面样式,比如加入自己的CSS或JS文件.这时候就需要自定义Django admin页面了.

2.1 添加静态文件

STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'admin_custom')
]

2.2 自定义页面模板

{% extends "admin/change_form.html" %}
{% block extrahead %}

{% endblock %}

2.3 自定义页面元素

最后,我们可以通过自定义页面元素来替换Django admin默认的元素,例如隐藏Django admin中默认的某些按钮:

{% extends "admin/change_form.html" %}
{% block submit_buttons_bottom %}
{% endblock %}

这里通过重写submit_buttons_bottom块,将Django admin中的提交按钮隐藏了.

示例说明

示例1:在Django admin中添加自定义页面

假设我们需要在Django admin中添加一个自定义的页面,用于展示系统的性能状况,包括CPU使用率、内存使用率等数据.

首先,我们需要创建一个Model,用于存储这些数据.然后创建一个自定义的管理器,重写默认的查询方法,使其只显示最近一笔数据.最后我们创建一个自定义的页面模板,在其中引用自己编写的CSS文件和JS文件,用于展示数据.

示例2:自定义Django admin的页面元素

假设我们需要自定义Django admin中的Model表单页面,去掉一些权限不足的用户不需要的字段.我们可以通过自定义管理器,使用exclude来隐藏某些字段;使用readonly_fields来设置只读字段;或者重写默认的查询方法,只查询该用户有权限查看的数据.

然后我们可以自定义页面元素,例如隐藏某些按钮,以实现更好的用户体验.

以上就是土嘎嘎小编为大家整理的详解Django_admin高级用法相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章