• django-admin管理后台高级自定义


    django自带的admin后台管理系统,在很多网站中被称为django的杀手级的应用。那么django-admin的适用情形倒底有哪些呢,一般 来说对于大型的商业性的项目通常不用采用django-admin来做为后台管理框架系统,通常的做法是通过权限控制在前台以不同的模板页的风格来区别是前台功能还是后台功能,或者是建立一个独立的后台管理系统。那是不是说django-admin在国内就没有市场了呢,事实上并不是,对于一些小微企业或创业公司,或者项目比较紧急的时候通常会采用django-admin来作为后台系统

    django-admin中进行定制化开发主要关注两部分内容:

    UserAdmin

    ModelAdmin

    通过对这两个类进行子类化的方式来实现一些简单功能的定制

    首先如果要对admin进行定制,需要将建立好的模型导入到admin模块之 中,然后在admin中注册该模块,如下所示:

    class xxoo(models.Model):

          pass

    在admin文件中配置

    from django.contrib import admin

    from models import xxoo

    注册:

    admin.site.register(xxoo)

    在django中本身支持本地化的语言显示,如需要把界面转变为中文的话需要在配置文件中添加以下配置MiDDLEWARE_CLASSES的SessionMiddleware下

        django.middleware.locale.localeMiddleware

    如果对于界面中用户信息的展示,不想全部显示或是想自定义显示可以通过自定义UserAdmin来实现

    from django.contrib import admin
    from models import xxoo
    from django.contrib.auth.admin import UserAdmin
    from django.contrib.auth.models import User
    例:只显示以下几个字段,可以通过子类化来实现
    class MyUserAdmin(UserAdmin):
         list_display=('email','first_name','last_name')
    同时由于user会注册到admin中,所以在定制化时需要先反注册
    admin.site.unregister(user)
    然后将user注册到MyUserAdmin中
    admin.site.register(User,MyUserAdmin)

    对于界面右侧的过滤器的自定义:如果只想过滤其中一个属性,如是否是职员:
    可以在MyUserAdmin中加入以下代码:

    List_filter=('is_staff',)


    对于搜索的自定义,默认情况下django搜索所有字段,只要检索到某一字段包含所搜索的内容就会被搜索到,如果想自定义搜索的字段可以在MyUserAdmin中加入以下代码

    search_fields=('last_name',)



    如何显示自定义的模型在网站中的显示,如xxoo

    同样是通过子类化来实现

    在admin中注册poem

    子类化ModelAdmin
    class PoemModelAdmin(admin.ModelAdmin):
         List_display=('email','first_name','last_name')
         class Meta:
            mode=Poem
    admin.site.register(Poem,PoemModelAdmin)


    给字段添加link查看信息,如想查看author的信息,通过以下设置后在页面中该 字段将变为一个a标签,点击时将带出相应的信息
    List_display_links=['author',]
    刷新页面后点击将字段标签查看

    对于新注册的model默认情况下是没有搜索功能的,如果想加入搜索功能,可以在代码中加入以下代码
       search_fields=('last_name',)

    如果想使一个字段可以编辑,可以在代码中加入以下代码

    List_editable=['title']

    django中规定:一个字段不能同时可链接可编辑

    对于admin后台界面的定制化,可以通过自定义template来实现
    在代码中加入以下代码
    change_form_template='xxx.html'

    xxx.html的内容如下,继承change_form.html   template目录下
    {%extends 'admin/change_form.html'%}
    {%block form_top%}
    内容
    {%endblock%}

    widget用来定义显示风格,如显示为textbox,dropdownlist等

    如果想修改一个字段的显示风格可以做以下设置

    from django.contrib.auth.admin import Useradmin
    from django.contrib.auth.models import User
    from django import forms
    from django.utils.safestring import mark_safe
    from django.template.loader import rend_to_string
    from models import xxoo
    class PoemForm(forms.ModelForm):
         class Meta:
            model=xxoo
            fields=['author','title']
            widgets={
                  'author':forms.Textarea(attrs={'cols':'20','rows':'1'})
     }

    通过以上设置即将author字段设置为textarea样式,同时设置了它的一些属性

    设置css样式:

    在static文件夹中新建xxx.css
    在代码中做以下设置
    class SubInputText(forms.TextInput):
         class Media:
            css={
                     'all':('input.css',)
                }


    class PoemForm(forms.ModelForm):
         class Meta:
            model=xxoo
            fields=['author','title']
            widgets={
                  'author':forms.Textarea(attrs={'cols':'20','rows':'1'}),
                  'title':SubInputText(),#设置css
                  'type':forms.RadioSelect  将type字段设置为radiobutton样式
     }

  • 相关阅读:
    开启Chrome内核浏览器的多线程下载功能
    golang fasthttp
    国内外短信接码平台合集
    jsrsasign 进行 RSA 加密、解密、签名、验签
    sysbench对自装MySQL数据库进行基准测试
    MySQL慢查询
    Logstash的配置
    简单的MySQL主从状态监控
    aria2c备忘
    DataX 整合后重新编译打包
  • 原文地址:https://www.cnblogs.com/lijintian/p/7792121.html
Copyright © 2020-2023  润新知