欢迎访问宙启技术站
智能推送

Django.contrib.admin.sites的基本用法介绍

发布时间:2024-01-11 16:06:10

Django.contrib.admin.sites是Django框架提供的一个管理后台的模块,它允许开发者快速地生成和定制一个管理后台,用于管理网站的各种模型数据。

基本用法介绍:

1. 注册模型:

在使用Django提供的管理后台功能之前,需要先注册需要管理的模型。可以在应用的admin.py文件中使用admin.site.register()方法来注册模型。

例如,我们有一个应用名为myapp,其中有一个模型名为MyModel:

   from django.contrib import admin
   from .models import MyModel
   
   admin.site.register(MyModel)
   

这样,MyModel就被注册到了管理后台,可以在后台页面进行对应的增删改查操作。

2. 定制管理页面:

Django提供了丰富的选项来定制管理页面的显示和行为。可以在注册模型时,传入一个继承自admin.ModelAdmin的自定义ModelAdmin类来进行定制。

例如,我们可以在管理页面中显示自定义的字段,修改默认的排序方式,并添加筛选和搜索功能:

   from django.contrib import admin
   from .models import MyModel
   
   class MyModelAdmin(admin.ModelAdmin):
       list_display = ('field1', 'field2', 'field3')
       ordering = ('-field1',)
       list_filter = ('field1', 'field2')
       search_fields = ('field1', 'field2')
   
   admin.site.register(MyModel, MyModelAdmin)
   

这样,在管理页面中,字段field1、field2、field3会被显示出来,数据按照field1字段的降序排列,同时还可以通过field1和field2进行筛选,以及在搜索框中进行搜索。

3. 配置管理页面:

Django还提供了一些配置选项来控制管理页面的显示和行为,可以在ModelAdmin类中定义这些选项。例如,可以设置显示每页的记录数、设置日期选择器的样式等等。

   from django.contrib import admin
   from .models import MyModel
   
   class MyModelAdmin(admin.ModelAdmin):
       list_display = ('field1', 'field2', 'field3')
       list_per_page = 20
       date_hierarchy = 'field3'
       date_input_formats = ['%Y-%m-%d']
   
   admin.site.register(MyModel, MyModelAdmin)
   

这样,在管理页面中,每页显示20条记录,field3字段会自动生成一个日期选择器,并且只接受格式为YYYY-MM-DD的日期输入。

4. 定制表单:

可以在ModelAdmin类中定义form属性,来定制表单的显示和行为。可以设置表单字段的显示顺序、排除或包含某些字段等。

   from django.contrib import admin
   from .models import MyModel
   from .forms import MyModelForm
   
   class MyModelAdmin(admin.ModelAdmin):
       form = MyModelForm
       fields = ('field1', 'field2')
       exclude = ('field3',)
   
   admin.site.register(MyModel, MyModelAdmin)
   

这样,在管理页面中,使用自定义的表单类MyModelForm,只显示field1和field2字段,同时排除field3字段。

5. 扩展定制:

Django提供了一些扩展接口,允许开发者对管理后台进行更深入的定制。可以继承自admin.sites.AdminSite类,定制一个自己的管理后台,并设置site属性为自定义的AdminSite实例。

   from django.contrib import admin
   from django.contrib.admin import AdminSite
   from .models import MyModel
   
   class MyAdminSite(AdminSite):
       site_header = '自定义管理后台'
       site_title = '自定义管理后台'
       index_title = '欢迎使用自定义管理后台'
   
   my_admin_site = MyAdminSite()
   my_admin_site.register(MyModel)
   

这样,自定义的管理后台页面会显示自定义的标题和欢迎信息。

使用例子(以一个简单的博客应用为例):

1. 注册模型和定制管理页面:

from django.contrib import admin
from .models import Blog

class BlogAdmin(admin.ModelAdmin):
    list_display = ('title', 'author', 'date_created')
    list_filter = ('author',)
    search_fields = ('title', 'content')

admin.site.register(Blog, BlogAdmin)

2. 配置管理页面:

from django.contrib import admin
from .models import Blog

class BlogAdmin(admin.ModelAdmin):
    list_display = ('title', 'author', 'date_created')
    list_per_page = 10
    date_hierarchy = 'date_created'
    date_input_formats = ['%Y-%m-%d']

admin.site.register(Blog, BlogAdmin)

3. 自定义表单:

from django.contrib import admin
from .models import Blog
from .forms import BlogForm

class BlogAdmin(admin.ModelAdmin):
    form = BlogForm
    fields = ('title', 'content', 'author')

admin.site.register(Blog, BlogAdmin)

通过以上例子,我们可以看到Django.contrib.admin.sites的基本用法和一些定制选项,可以根据自己的需求灵活调整和扩展管理后台。