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 ...
随机推荐
- python IDE安装-mac
mac 配置Python集成开发环境(Eclipse +Python+Pydev) 1.下载Mac版64位的Eclipse. 进入到Eclipse官方网站的下载页面(http://www.ecli ...
- “全栈2019”Java第八十四章:接口中嵌套接口详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- 洛谷P5050 【模板】多项式多点求值
传送门 人傻常数大.jpg 因为求逆的时候没清零结果调了几个小时-- 前置芝士 多项式除法,多项式求逆 什么?你不会?左转你谷模板区,包教包会 题解 首先我们要知道一个结论\[f(x_0)\equiv ...
- mysqldump导出数据不带时区信息的问题
今天在导出数据时,发现所有timestamp字段都不带时区信息,因为我在东8区,导出的数据中所有时间都提早了8个小时 首先先看表的字段和数据 CREATE TABLE IF NOT EXISTS `a ...
- MyEclipse迁移过程中Tomcat版本不一致的解决办法
MyEclipse迁移过程中Tomcat版本不一致的解决办法 下面就是在MyEclipse2013迁移被Tomcat6.0X绑定的项目迁移到MyEclipse2014 Tomcat8.0X,报如下pr ...
- IOS面试题(二)
50. 谈谈对Block 的理解?并写出一个使用Block执行UIVew动画? 答:Block是可以获取其他函数局部变量的匿名函数,其不但方便开发,并且可以大幅提高应用的执行效率(多核心CPU可直接处 ...
- javascript 私有化属性,和公共属性
function TestClassA(name, number) { this.name = name; //public this.number = number; //public var ac ...
- python学习,day3:集合的学习
集合天生去重,另外集合非常便于两组数字的取交集,并集等计算 # coding=utf-8 # Author: RyAn Bi list_1 =[1,2,3,4,5,6,7] list_1 =set(l ...
- origin显示三维曲面
准备数据并选中数据: 这里如果只关心z<1部分的趋势,可以对Z轴范围进行调整,双击Z轴的数字: 然后修改显色条的范围,双击曲面: 最后让曲面最上面部分clip掉: 成功了:
- 高阶篇:4.1.1)QFDI(客户需求转换为设计要求)
本章目的:明确QFDI的作用:收集客户需求(Customer Needs),转换为设计要求(Design Feature).并介绍其制作方法. 1.QFDI质量屋举例 不用怀疑,现在大部分参考教材所谓 ...