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 ...
随机推荐
- [Maven实战-许晓斌]-[第二章]-2.2基于UNIX系统安装maven
>> >> >>3
- 编译的 Ruby 2.3.0 缺少 openssl 支持的解决方法 (已解决)
我的系统是centos 7.5,已离线安装ruby-2.3.0,openssl-1.0.2l,rubygems-2.7.4 如下图: 但是在 gem sources -a http://gems.r ...
- iOS 发送位置消息
发送地理位置在社交应用里面是很常用的需求.最近也需要在自己的应用里面加入这个功能 首先我们需要获取自己的地理位置,这里用到 CLLocationManager 这个类,调用如下代码 locationM ...
- linux安装redis 完整步骤
原文连接:https://www.cnblogs.com/lauhp/p/8487029.html 安装: 1.获取redis资源 wget http://download.redis.io/rele ...
- 模块化之seaJs学习和使用
使用seaJs也有一阵子了,一直也想抽个时间写个这方面的博客,直到今天才写……也许写的不是很完善,但跟大伙分享也是一种乐趣,不对之处欢迎指出.[抱拳] 时间有限,我这里不过多介绍前端模块化,有兴趣可以 ...
- 51nod2004 终结之时 (支配树+树剖+树链的并)
link 我永远喜欢洛天依 给定一张图世末积雨云,你需要维护其支配树: 单点修改,子树修改,树链修改 子树求和,树链求和,多条树链的并集求和 撤销之前的操作 可以先用 Lengauer-Tarjan ...
- js常见报错解决方法
1.获得类名document.getElementsClassName(常出现一个问题): getClassName("gn","pt")[0].appendC ...
- 集合之四:List接口
查阅API,看List的介绍.有序的 collection(也称为序列).此接口的用户可以对列表中每个元素的插入位置进行精确地控制.用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的 ...
- [Alpha]Scrum Meeting#2
github 本次会议项目由PM召开,时间为4月2日晚上10点30分 时长25分钟 任务表格 人员 昨日工作 下一步工作 木鬼 撰写内置问卷(issue#3) 撰写团队贡献分配计划(issue#39) ...
- Leo-io 的C语言实现简单五子棋游戏观后感
源代码: /************************************************************** ** 文 件 名:wuziqi.cpp ** 功 能:扫 ...