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

Django Admin 管理工具

一、简介

Django Admin 是 Django 框架最受欢迎和强大的特性之一。它是一个自动生成的管理后台,允许开发者无需或仅需编写少量代码,就能对网站的数据模型(数据库中的表)进行直观的增、删、改、查(CRUD)操作。

二、核心概念

Django Admin 不是一个面向普通用户的前台界面,而是一个为网站管理员、内容编辑者、运营人员提供的内部工具。它的核心思想是:“为你的人员编辑内容而设计,而不是给网站的访问者使用。”

三、主要特性

  1. 自动生成

    只需在 admin.py 中注册你的模型(Model),Django 就会立刻根据模型字段自动生成一个功能完备的管理界面,包括表单和列表视图。
  2. 开箱即用

    无需从零开始编写后台,安装 Django 后即可使用,极大提高了开发效率。
  3. 高度可定制

    几乎每个方面都可以定制,从列表显示字段、搜索过滤、到表单布局和自定义操作,满足复杂业务需求。
  4. 内置权限控制

    与 Django 强大的用户认证和权限系统深度集成,可以精细控制不同用户/用户组能查看和操作哪些数据。
  5. 安全可靠

    默认提供了 CSRF 保护、XSS 防护等安全机制,界面经过多年发展和实战检验,非常稳定。

四、激活管理工具

当我们创建好项目后,可以在项目的 settings.py 中的 INSTALLED_APPS 看到它:

# Application definitionINSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','TestModel',
]

通常我们在生成项目时会在 urls.py 中自动设置好,只需去掉注释即可。

配置项如下所示:

# urls.py
from django.conf.urls import url
from django.contrib import adminurlpatterns = [url(r'^admin/', admin.site.urls),
]

五、工作流程与基本使用

1. 创建超级用户

要进入 Admin,首先需要创建一个拥有所有权限的超级用户。

python manage.py createsuperuser

然后按提示输入用户名、邮箱和密码。

2. 创建模型

下面我们先来创建几个模型,在项目的models.py编写几个模型及其属性

# models.py
from django.db import modelsclass Test(models.Model):name = models.CharField(max_length=20)class Contact(models.Model):name = models.CharField(max_length=200)age = models.IntegerField(default=0)email = models.EmailField()def __unicode__(self):return self.nameclass Tag(models.Model):contact = models.ForeignKey(Contact,on_delete=models.CASCADE,)name = models.CharField(max_length=50)def __unicode__(self):return self.name

上面的代码定义了3个模型,并声明模型的属性,属性类型,长度,默认值。其中模型Tag的contact属性依赖Contact模型,构成主外键关系,删除策略为级联删除。

3.注册模型

在项目的 admin.py 文件中,引入模型并使用 admin.site.register() 进行注册。

from django.contrib import admin# from hello_django.TestModel.models import Test
from .models import Test, Contact, Tag# Register your models here.
# class ContactAdmin(admin.ModelAdmin):
#     fields = ('name','email')
#
# 分栏显示
# class ContactAdmin(admin.ModelAdmin):
#     fieldsets = (
#         ['Main',{
#             'fields':('name','email'),
#         }],
#         ['Advance',{
#             'classes': ('collapse',), # CSS
#             'fields': ('age',),
#         }]
#     )
# 内联(Inline)显示,让 Tag 附加在 Contact 的编辑页面上显示。
class TagInline(admin.TabularInline):model = Tag# 指定内联显示,显示的字段,搜索使用的字段
class ContactAdmin(admin.ModelAdmin):list_display = ('name', 'email', 'age')search_fields = ('name',)inlines = [TagInline]  # Inlinefieldsets = (['Main', {'fields': ('name', 'email'),}],['Advance', {'classes': ('collapse',),'fields': ('age',),}])
admin.site.register(Contact,ContactAdmin)
admin.site.register([Test])

Django Admin 的强大之处在于其可定制性。通过定义 ModelAdmin 类,可以深度控制后台的行为和外观。我们可以使用它高度定制特性以实现我们的需求。使用方法就是创建一个Model模型,在admin.py创建一个对应的模型管理类,然后一起注册即可。

例如,上面我们创建了Contact模型,上面admin.py代码定义了一个 ContactAdmin 类,用以说明管理页面的显示格式。里面的 fields 属性定义了要显示的字段。list_display定义要展示的字段,search_fields定义查询使用的字段。由于该类对应的是 Contact 数据模型,我们在注册的时候,需要将它们一起注册。

admin.site.register(Contact,ContactAdmin)

如果注册有多个模型,要用数组符号[]括起来,我这里是将Contact和Tag整合了。所以只剩Test。

admin.site.register([Test])
4.启动服务

然后执行命令启动服务:

 python manage.py runserver 0.0.0.0:8000
5.访问后台

访问 http://127.0.0.1:8000/admin/,使用刚才创建的超级用户登录。

登录进去后,我们可以通过页面实现对数据的增删改查以及实现想要的展示效果。

上面代码定义的模型的页面效果

查询

右上角点击 LOG OU退出登录。

http://www.dtcms.com/a/356260.html

相关文章:

  • Java中协变逆变的实现与Kotlin中的区别
  • 如何用 Kotlin 在 Android 手机开发一个应用程序获取国家或地区信息
  • echo、seq、{}、date、bc命令
  • 如何用 Kotlin 在 Android 手机开发一个应用程序获取网络时间
  • OpenCV之霍夫变换
  • 在C++11中实现函数式编程的组合子
  • AI推介-大语言模型LLMs论文速览(arXiv方向):2025.04.25-2025.04.30
  • React Native 初体验
  • rabbitmq学习笔记 ----- 多级消息延迟始终为 20s 问题排查
  • OpenCV 图像预处理核心技术:阈值处理与滤波去噪
  • LubanCat-RK3568 UART串口通信,以及遇到bug笔记
  • CRYPT32!CryptMsgUpdate函数分析和asn.1 editor nt5inf.cat 的总览信息
  • 第八篇 永磁同步电机控制-MTPA、MTPV
  • 深入解析Qt节点编辑器框架:数据流转与扩展机制(三)
  • 实时音视频延迟优化指南:从原理到实践
  • 零知开源——基于STM32F407VET6和ADXL345三轴加速度计的精准运动姿态检测系统
  • Blender模拟结构光3D Scanner(三)获取相机观测点云的真值
  • OpenCV 基础知识总结
  • 无懈可击的 TCP AIMD
  • 亚马逊季节性产品运营策略:从传统到智能化的演进
  • kimi浏览器助手-月之暗面推出的智能浏览器扩展
  • docker中的mysql有中文显示问题跟大小写区分问题?
  • Python从入门到高手9.4节-基于字典树的敏感词识别算法
  • 使用Python脚本执行Git命令
  • React 状态丢失:组件 key 用错引发的渲染异常
  • Rust 安装与运行指南
  • Custom SRP - LOD and Reflections
  • 柳州市委常委、统战部部长,副市长潘展东率队首访深兰科技集团新总部,共探 AI 赋能制造大市与东盟合作新局
  • Claude Code 完整手册:从入门、配置到高级自动化
  • 【python】相机输出图片时保留时间戳数据