Django Admin 管理工具
一、简介
Django Admin 是 Django 框架最受欢迎和强大的特性之一。它是一个自动生成的管理后台,允许开发者无需或仅需编写少量代码,就能对网站的数据模型(数据库中的表)进行直观的增、删、改、查(CRUD)操作。
二、核心概念
Django Admin 不是一个面向普通用户的前台界面,而是一个为网站管理员、内容编辑者、运营人员提供的内部工具。它的核心思想是:“为你的人员编辑内容而设计,而不是给网站的访问者使用。”
三、主要特性
-
自动生成
只需在
admin.py
中注册你的模型(Model),Django 就会立刻根据模型字段自动生成一个功能完备的管理界面,包括表单和列表视图。 -
开箱即用
无需从零开始编写后台,安装 Django 后即可使用,极大提高了开发效率。
-
高度可定制
几乎每个方面都可以定制,从列表显示字段、搜索过滤、到表单布局和自定义操作,满足复杂业务需求。
-
内置权限控制
与 Django 强大的用户认证和权限系统深度集成,可以精细控制不同用户/用户组能查看和操作哪些数据。
-
安全可靠
默认提供了 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.pyfrom django.conf.urls import urlfrom django.contrib import admin urlpatterns = [ url(r\'^admin/\', admin.site.urls),]
五、工作流程与基本使用
1. 创建超级用户
要进入 Admin,首先需要创建一个拥有所有权限的超级用户。
python manage.py createsuperuser
然后按提示输入用户名、邮箱和密码。
2. 创建模型
下面我们先来创建几个模型,在项目的models.py编写几个模型及其属性
# models.pyfrom 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 Testfrom .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] # Inline fieldsets = ( [\'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退出登录。