Django.contrib.admin.sites的基本用法介绍
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的基本用法和一些定制选项,可以根据自己的需求灵活调整和扩展管理后台。
