django admin
参考资料:https://www.cnblogs.com/wumingxiaoyao/p/6928297.html
依赖
默认在创建项目后就能使用。
1,确保django.contrib.admin在INSTALL_APP中,同时还确保django.contrib.contenttypes, django.contrib.messages, django.contrib.sessions在INSTALL_APP中。
2,确保django.contrib.auth.context_processors.auth和django.contrib.messages.context_processors.messages在templates的options中。
3,确保中间件中有django.contrib.auth.middleware.AuthenticationMiddleware和django.contrib.messages.middleware.MessageMiddleware。
4,确保admin在你的URLconf中。
AdminConfig与SimpleAdminConfig
区别:AdminConfig比SimpleAdminConfig多使用一个autodiscover方法。SimpleAdminConfig不会将INSTALL_APP中的项目导入到后台,在自定义管理后台时,使用SimpleAdminConfig代替AdminConfig。
admin全局配置
全局配置更改如下,详情请见官网:https://docs.djangoproject.com/en/3.0/ref/contrib/admin/
admin.site.register("Blog") # 注册字段,在管理界面可编辑
admin.site.site_header = 'catfish的个人博客' # 设置顶部标题
admin.site.site_title = '欢迎光临,我的博客' # 设置标签页标题
admin.site.site_url = '/' # 设置后台网站顶部打开url的相对链接,默认为'/'
admin.site.index_title = "admin" # 设置导航栏顶部下面的标题,默认为“站点管理”
admin.site.empty_value_display = "这里为空" # 设置默认的空值字符串,默认为'-'
Copy
admin的属性字段配置
https://docs.djangoproject.com/en/3.0/ref/contrib/admin/
基本常用配置
list_display 表式后台界面应该展示哪些字段。actions表示管理员动作。fields表示哪些表单在编辑界面展示出来。exclude表示哪些表单在编辑界面不展示出来。list_display_link表示哪些字段可以点击进入编辑界面,默认是从左到右的第一个字段。list_filter表示按某个字段类筛选。search_field表示被搜索的相关字段。list_per_page表示每一页可以看到的对象数。date_hierarchy 表示详细时间分层筛选。readonly_fields设置只读字段。list_editable在列表时可编辑的列,不过不能是可点击进入的字段或者是models里面的自定义函数。filter_horizontal 适用于较多的ManyToMany字段。
from django.contrib import admin
from myapp.models import Blog
@admin.register(Blog)
class BlogAdmin(admin.ModelAdmin):
actions = None
actions_on_top = True
actions_on_bottom = False
actions_selection_counter = True # 默认计数
date_hierarchy = 'pub_date' # 日期分排
empty_value_display = "-empty-"
exclude = ("title",) # field = ("content",)
fieldsets = (
(None, {
'fields': ('url', 'title', 'content', 'sites')
}),
('Advanced options', {
'classes': ('collapse',), # collapse代表折叠,wide带表额外的水平空间
'fields': ('registration_required', 'template_name'),
'description': '额外注释和描述',
}),
)
filter_horizontal = ('ManyToMany',)
filter_horizontal = ('ManyToMany',)
form = Forms # 自定义表单
formfield_overrides = {
models.TextField: {'widget': RichTextEditorWidget},
}
list_display = ('title', 'content')
list_display_links = ("title",)
list_editable = ("content",)
list_filter = ('search',)
list_max_show_all = 200 # 显示全部
list_per_page = 100 # 分页
list_select_related = False
ordering = ("-date",)
prepopulated_fields = {"slug": ("title",)}
view_on_site = True # get_absolute_url返回的链接
Copy
后台字体改变样式
# models.py
from django.db import models
from django.utils.html import format_html
class Blog(models.Model):
...
def color_name(self):
return format_html('<span style="color: red;">{} {}</span>', self.title, self.content)
Copy
然后到admin.py中注册即可显示出对应样式。
fieldset参数
fieldset参数可以将表单分块展示,下列是fieldset参数的格式:
fieldsets = (
(标题, {内容}),
(标题,{内容}),
)
Copy
举例如下:
fieldsets = (
('基础配置', {'field': ('title','content'), 'class':('collapse',), 'description':'这里是帮助文档'}),
(None , {'field':('slug', 'date'), 'class':('width',), 'description': '这里是描述'}),
)
Copy
内容中有三个键可以进行选择:field是必选的,它规定哪些字段相关表单在该标题处显示。class表示该区块中添加的class属性,目前生效的有两个:collapse和wide。collapse表示该内容区域可折叠,wide表示额外的水平空间。description表示该标题下相关的帮助文档信息。
管理员动作
1,编写函数名,举例如下:
# admin.py
def make_published(modeladmin, request, queryset):
queryset.update(status='p')
Copy
2,在actions中注册函数名即可。
django后台添加文档
1,在INSTALL_APP中添加 django.contrib.admindocs
2,在urls.py中添加path('admin/doc/', include('django.contrib.admindocs.urls')),并放到admin之前。
3,pip安装docutils 模块。
4,将django.contrib.admindocs.middleware.XViewMiddleware放入中间件中。
5,完毕,接下来在管理后台的右上角就可以看到了!
django admin方法
short_description 注释。empty_value_display 为空值时显示的值。 boolean=True启用图片形式。admin_order_field 排序规则。