Django 进阶 之 定制Admin
Django自带的admin后台提供有丰富的扩展可供定制出符合自己需求的界面和功能
一、 本地化显示admin后台,显示成中文(显示语言与操作系统语言一致)
修改 /setting.py 给 MIDDLEWARE 中增加 'django.middleware.locale.LocaleMiddleware',
位置在 'django.contrib.sessions.middleware.SessionMiddleware', 下面,如下:
1 MIDDLEWARE = [ 2 'django.middleware.security.SecurityMiddleware', 3 'django.contrib.sessions.middleware.SessionMiddleware', 4 'django.middleware.locale.LocaleMiddleware', 5 'django.middleware.common.CommonMiddleware', 6 # 'django.middleware.csrf.CsrfViewMiddleware', 7 'django.contrib.auth.middleware.AuthenticationMiddleware', 8 'django.contrib.messages.middleware.MessageMiddleware', 9 'django.middleware.clickjacking.XFrameOptionsMiddleware', 10 ]
二、 定制内置User的显示
1 from django.contrib import admin 2 from django.contrib.auth.admin import UserAdmin 3 from django.contrib.auth.models import User 4 5 class MyUserAdmin(UserAdmin): 6 list_display = ('username','email','is_staff') #定制User显示字段 7 list_filter = ('is_staff',) #定制筛选字段,如果没有,则筛选所有字段 8 search_fields = ('username','email') #定制搜索字段,如果没有,则从所有字段中搜索 9 10 admin.site.unregister(User) 11 admin.site.register(User, MyUserAdmin)
三、 定制自定义Model的显示
1 from django.contrib import admin 2 from polls.models import Poem,ToDo 3 4 class PoemModelAdmin(admin.ModelAdmin): 5 list_display = ('title','author') #定制显示字段 6 list_display_links = ['author',] #定制点击内容到修改页面的字段 7 search_fields = ['title','author'] #定制搜索字段 8 list_editable = ['title',] #定制列表页上可编辑的字段(同一字段不可以是既可链接又可编辑的) 9 list_filter = ['author',] #定制可过滤字段 10 11 change_form_template = 'manage/change_form.html' #定制修改页模板 12 13 class Meta: 14 model = Poem 15 16 17 admin.site.register(Poem, PoemModelAdmin)
1 {% extends 'admin/change_form.html' %} 2 {% block form_top %} 3 <p>注意:不要将作者和标题写错哦!</p> 4 {% endblock %}
四、 定义自定义Adim widget, 可以修改字段默认widget, 可以设置widget属性
1 rom django.contrib import admin 2 from polls.models import Poem,ToDo 3 from django import forms 4 5 class SubInputText(forms.TextInput): # 自定义控件样式的调用 6 class Media: 7 css = { 8 'all' : ('input.css',) 9 } 10 11 class PoemForm(forms.ModelForm): 12 class Meta: 13 model = Poem 14 fields = ['title','author'] 15 widgets = { 16 'title': forms.Textarea(attrs={'cols':'30','rows':'2'}), #显示为textarea 17 'author': SubInputText() #设置显示样式 18 } 19 20 class PoemModelAdmin(admin.ModelAdmin): 21 form = PoemForm 22 23 class Meta: 24 model = Poem 25 26 27 admin.site.register(Poem, PoemModelAdmin)
1 input[type=text]{ 2 background: #efefef; 3 }

浙公网安备 33010602011771号