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样式
}
django-admin管理后台高级自定义的更多相关文章
- django admin管理后台中文添加问题
django版本号 1.7.8 #create database mydb character set utf8;#django-admin.py startproject mysite#设置sett ...
- django学习-23.admin管理后台的数据表数据的自定义展示
目录结构 1.前言 2.自定义设置一张指定的数据表的列表展示内容 2.1.第一步:如果我们想让数据表[hello_person]里面的表字段值全部展示出来,需在应用[hello]里的[admin.py ...
- django学习-26.admin管理后台里:修改登录页面标题,修改登录框标题,修改首页标题
目录结构 1.前言 2.完整的操作步骤 2.1.第一步:查看[site.py]的源码 2.2.第二步:在应用[hello]所在目录里的[admin.py]里重写三个属性的属性值 2.3.第三步:重启服 ...
- django学习-19.admin管理后台的配置和登录
目录结构 1.前言 2.admin管理后台的配置和登录的完整操作流程 2.1.第一步: 在[settings.py]里对常量[INSTALLED_APPS]的值进行相关配置 2.2.第二步: 在[ur ...
- django学习-27.admin管理后台里:对列表展示页面的数据展示进行相关优化
目录结构 1.前言 2.完整的操作步骤 2.1.第一步:查看ModelAdmin类和BaseModelAdmin类的源码 2.2.第二步:查看表animal对应的列表展示页面默认的数据展示 2.3.第 ...
- django学习-25.admin管理后台里:把表名称和表字段名称的展示值都由英文显示改为由中文显示
目录结构 1.前言 2.完整的操作步骤 2.1.第一步:修改模型类Article 2.2.第二步:重启服务 2.3.第三步:退出登录并再次成功登陆admin管理后台 2.4.第四步:查看最新的表名称展 ...
- Admin管理后台
Django奉行Python的内置电池哲学.它自带了一系列在Web开发中用于解决常见问题或需求的额外的.可选工具.这些工具和插件,例如django.contrib.redirects都必须在setti ...
- 第五章:Admin管理后台
Django奉行Python的内置电池哲学.它自带了一系列在Web开发中用于解决常见问题或需求的额外的.可选工具.这些工具和插件,例如django.contrib.redirects都必须在setti ...
- 16.-admin管理后台
一.admin管理后台 Django提供给了比较完善的后台管理数据库接口,可供开发过程中调用和测试使用 Django会搜集所有已注册的模型类,为这些模型类提供数据管理界面,供开发者使用 命令:py ...
随机推荐
- 【OCP-12c】CUUG最新考试原题整理及答案(071-10)
10.(5-6) choose the best answer:Examine the structure of the EMPLOYEES table:There is a parent/child ...
- bzoj 4283 魔法少女伊莉雅
题目大意 给定一个 $n$ 个点 $m$ 条边的带正权无向图.要求找一条路径满足: 它是一条简单路径 它是一条严格次短路 对于任何一条可能存在于最短路上的边,不能包含它的反向边. 不存在这条路径输出 ...
- [转] 翻译130+VIM基本命令
基础 :e filename 在编辑器中打开一个文件 :w 保存文件 :q 退出vim :q! 退出但不保存 :x 写文件(如果有做修改)并退出 :sav filename 保存为 . 在正常模式中重 ...
- Flink学习笔记:Flink API 通用基本概念
本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKhaz ...
- leetcode-575-Distribute Candies(计算一个数组中元素的种类的快速方法)
题目描述: Given an integer array with even length, where different numbers in this array represent diffe ...
- 编程开发之--Java集合类继承与实现必备知识
1.LinkedHashSet有序链式集合 举例: long startTime=System.currentTimeMillis(); LinkedHashSet oprTypeSet = new ...
- 洛谷 P5249 [LnOI2019]加特林轮盘赌 题解【概率期望】【DP】
很有意思的题目. 题目背景 加特林轮盘赌是一个养生游戏. 题目描述 与俄罗斯轮盘赌等手枪的赌博不同的是,加特林轮盘赌的赌具是加特林. 加特林轮盘赌的规则很简单:在加特林的部分弹夹中填充子弹.游戏的参加 ...
- Bowen
Advertise Window大小 注册表键值位于:regedit->HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Pa ...
- 【实战分享】安卓app测试的一些记录
一.app代码未混淆1.使用7zip解压apk文件2.执行命令:dex2jar.bat apk解压后文件夹中的classes.dex文件3.上述命令执行后会在apk文件夹中生成java源码文件clas ...
- 使用python requests库写接口自动化测试--记录学习过程中遇到的坑(1)
一直听说python requests库对于接口自动化测试特别合适,但由于自身代码基础薄弱,一直没有实践: 这次赶上公司项目需要,同事小伙伴们一起学习写接口自动化脚本,听起来特别给力,赶紧实践一把: ...