通过定义管理类来管理后台的各个模块

from django.contrib.auth.admin import UserAdmin
官方用户管理界面,有非常方便的管理方式
面向对象的精髓:通过继承,来实现相应的业务功能
不用去研究里面具体细节,因为已经封装好了,只去研究要实现的业务功能
自定义model在settings里面进行设置,自定义admin需要在注册的时候进行设置
修改后台密码
因为后台的密码是密文写的,如果直接改为明文会出错
方法一:
继承admin.ModelAdmin,修改其保存密码的方式
将后台保存密码进行加密进行保存,会出错
方法二:
继承UserAdmin,直接修改用户管理界面
class UserAdmin(admin.ModelAdmin):
fieldsets = (
(None, {'fields': ('username', 'password')}),
(_('Personal info'), {'fields': ('first_name', 'last_name', 'email')}),
(_('Permissions'), {'fields': ('is_active', 'is_staff', 'is_superuser',
'groups', 'user_permissions')}),
(_('Important dates'), {'fields': ('last_login', 'date_joined')}),
)
add_fieldsets = (
(None, {
'classes': ('wide',),
'fields': ('username', 'password1', 'password2'),
}),
)
form = UserChangeForm
add_form = UserCreationForm
change_password_form = AdminPasswordChangeForm
list_display = ('username', 'email', 'first_name', 'last_name', 'is_staff')
list_filter = ('is_staff', 'is_superuser', 'is_active', 'groups')
search_fields = ('username', 'first_name', 'last_name', 'email')
ordering = ('username',)
filter_horizontal = ('groups', 'user_permissions',)
class UserProfileAdmin(UserAdmin):
fieldsets = (
(None, {'fields': ('email', 'password')}),
(_('Personal info'), {'fields': ('email','qq','phone')}),
(_('Permissions'), {'fields': ('is_active', 'is_staff', 'is_superuser',
'groups', 'user_permissions')}),
(_('Important dates'), {'fields': ('last_login', 'date_joined')}),
)
add_fieldsets = (
(None, {
'classes': ('wide',),
'fields': ('email', 'password1', 'password2'),
}),
)
list_display = ( 'email', 'is_staff')
list_filter = ('is_staff', 'is_superuser', 'is_active', 'groups')
ordering = ('email',)
filter_horizontal = ('groups', 'user_permissions',)
如果有没用Pycharm自动配置admin的话,手动配置
在urls.py中注释掉
from django.contrib import admin
admin.autodiscover()
url(r'^admin/', include(admin.site.urls)),
INSTALLED_APPS当中的 'django.contrib.admin',,然后启动runserver在此之前还需要配置数据库,后台管理需要创建数据表
from django.shortcuts import render
def index(request):
return render(request, 'index.html.',locals())
配置admin
装Django1.9时,创建的superuser账号和密码不能相同,卧槽,1.9版本的密码要求很规范
from models import * admin.site.register(User) 在admin当中进行设置
models如果不加修改,以默认选择设置admin,还可以自定义models
在admin里面进行自定义
class ArticleAdmin(admin.ModelAdmin):
fields = ('title','desc','content')
admin.site.register(Article,ArticleAdmin)如果不加后面的ArticleAdmin,就默认的形式进行设定
fields 显示指定字段 exclude 出了指定字段,显示其他字段
fieldsets可以对要设定的字段做一个很好的划分,把一部分隐藏,一部分显示
list_display可以显示指定的列
list_display_links指定列可以点击
还有很多属性,需要用的时候查阅官方文档
class AuthorAdmin(admin.ModelAdmin): list_display=('name', 'age', 'sex') #指定要显示的字段 search_fields=('name',) #指定要搜索的字段,将会出现一个搜索框让管理员搜索关键词 list_filter = ('publication_date',) #指定列表过滤器,右边将会出现一个快捷的日期过滤选项,#以方便开发人员快速地定位到想要的数据,同样你也可以指定非日期型类型的字段 date_hierarchy = 'birth' #日期型字段进行层次划分。 ordering = ('-birth','age') #对出生日期降序排列,对年级升序 fields = ('name','sex','age','birth','type') #自定义编辑表单,在编辑表单的时候 显示哪些字段,显示的属性# 分组表单 fieldsets = ( ('基本信息', {'fields': ('title', 'content', 'excerpt', 'publish_date','status', 'user', 'categories')}), ('Meta Data', {'fields': ('alias', 'keywords', 'description')}), ) admin.site.register(Person,AuthorAdmin