zoukankan      html  css  js  c++  java
  • 自定义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

     












  • 相关阅读:
    python+django+uwsgi 搭建环境
    python系列-3 pyenv的使用
    生产消费者队列(TaskCompletionSource)的应用
    socket
    Redis 参考
    webform调用windows服务
    文件编码格式获取
    webform版部分视图与请求拦截
    asp.net 自定义节配置 (configSections下的section)
    组合配置草稿
  • 原文地址:https://www.cnblogs.com/wuqingzangyue/p/5749595.html
Copyright © 2011-2022 走看看