Django——admin创建和使用
1. Django Admin简介
Django Admin是Django框架自带的一个管理后台工具,它允许开发者通过一个直观的Web界面轻松地管理应用中的数据模型。Admin提供了模型的CRUD(Create,Read, Update, Delete)操作,以及数据的批量处理和搜索功能,极大地简化了日常的数据库管理。它不仅适用于开发阶段,也非常适合在生产环境中进行数据维护。
2. Admin界面定制
Django Admin提供了丰富的定制选项,允许开发者根据项目需求调整界面。
- 自定义Admin模板:可以通过创建自定义的模板来改变Admin界面的外观,
AD:首页 | 一个覆盖广泛主题工具的高效在线平台例如修改admin/base_site.html
。 - 自定义Admin CSS和JavaScript:可以在
settings.py
中添加自定义的CSS和JavaScript文件,以改变Admin的样式和行为。
2.2 使用Admin类进行高级配置
Django Admin使用Admin类来配置模型的管理界面。
- 创建Admin类:在
admin.py
中,为每个模型创建一个Admin类,例如class MyModelAdmin(admin.ModelAdmin): ...
。 - 注册Admin类:使用
admin.site.register(MyModel, MyModelAdmin)
注册模型和其对应的Admin类。 - 配置选项:在Admin类中,可以设置各种选项,如
list_display
用于指定列表页面显示的字段,search_fields
用于添加搜索框等。
2.3 字段和字段集的管理
- 字段管理:可以在Admin类中使用
fields
或fieldsets
属性来控制编辑页面中字段的显示。 - 字段集:
fieldsets
允许将字段分组,提供更好的用户体验,例如fieldsets = [('基本信息', {'fields': ['name', 'description']}), ...]
。
2.4 列表页面的优化
- 自定义列表视图:使用
list_display
来控制列表页面显示的字段,list_filter
来添加过滤器,ordering
来设置默认排序。 - 添加操作按钮:使用
actions
属性来添加批量操作,如批量删除或标记为已读。
2.5 使用内联模型
内联模型允许在父模型的编辑页面中直接编辑相关联的模型。
- 定义内联模型:在Admin类中使用
inlines
属性,例如class RelatedModelInline(admin.TabularInline): model = RelatedModel
。 - 使用内联模型:在父模型的Admin类中添加内联模型,如
inlines = [RelatedModelInline]
。
3 admin的定制与扩展
3.1 自定义Admin模板
- 自定义Admin模板:Django Admin允许你自定义Admin界面的外观和行为,包括修改模型的列表、表单和详细页面的外观。
- 自定义Admin样式:可以通过覆盖Admin模板或使用自定义CSS来调整Admin界面的样式。
3.2 使用Admin actions
- Admin actions:Django Admin提供了Admin actions功能,允许你在Admin界面上批量处理对象,如批量删除、导出等操作。
- 自定义Admin actions:你可以编写自定义的Admin actions来执行特定的批量操作。
3.3 集成第三方应用
- 第三方应用集成:Django允许你轻松地集成第三方应用,通过安装和配置第三方应用,你可以扩展Django的功能。
3.4 国际化和本地化
- 国际化:Django提供了国际化支持,允许你将应用程序本地化为多种语言。
- 本地化:通过使用Django的内置国际化工具和翻译机制,可以轻松地将应用程序本地化为不同的语言和地区。
3.5 使用Django REST Framework进行API开发
- Django REST Framework:DRF是一个强大且灵活的工具,用于构建Web API。它提供了丰富的功能,包括序列化、视图、认证、权限等。
- API开发:通过DRF,你可以快速构建出符合RESTful设计原则的API,为移动应用、前端框架或其他服务提供数据接口。
代码定制的例子:
# Register your models here.
from django.db import models
from blog.models import Article
admin.site.site_header= "座舱软件部-自动化测试平台"
admin.site.site_title= "座舱软件部-自动化测试平台"
#@admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):
#编辑要显示的信息
list_display = ["title","brief_content","publish_date"]
#list_filter = ['title']
#搜索的字段
search_fields = ['title', 'brief_content']
admin.site.register(Article,ArticleAdmin)