自定义admin

在admin当中可以通过继承admin.ModelAdmin来定义类管理后台
通过定义管理类来管理后台的各个模块


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

 












posted @ 2016-08-08 15:48  意发并行  阅读(389)  评论(0编辑  收藏  举报