二、xadmin----简单使用
1、中文设置:
settings.py中直接配置:
LANGUAGE_CODE = "zh-hans"
TIME_ZONG = "Asia/Shanghai"
2、菜单折叠:
在users/xadmin.py中添加GLOBALSETTINGS
from xadmin import views
class GlobalSettings(object):
site_title = "头部名称"
site_footer = "脚部名称"
menu_style = "accordion" # 菜单折叠
apps_icons = {"appname":"icon"} #设置app的显示图标
xadmin.site.register(views.CommAdminView, GlobalSettings)

3、页面布局定制:
class UserAdmin(object):
def get_form_layout(self):
if self.org_obj:
self.form_layout = (
Main(
Filedset('',
'username', 'password', css_class="unsort no_title"
),
Fieldset(_('Personal info'),
Row('firstname', 'lastname'), email
),
Fieldset(
_('permissions'),
'grounps', 'userpermissions'
),
Fieldset(
_('important dates'),
'last_login', 'date_joined'
),
),
Side(
Fieldset(
_('status'),
'is_active', 'is_stuff', "is_superuser"
)
)
)
return self.super(UserAdmin, self).get_form_layout()

4、更改图标
更改app图标 通过app_icons来设置
class GlobalSetting(object):
site_title = "上海诺行信息技术有限公司"
site_footer = "COPYRIGHT © 2010 - 2018 ALL RIGHTS RESERVED"
menu_style ="accordion"
apps_icons = {"home":"fa fa-home", "products":"", "companyintroduction":"", "certifications":"fa fa-certificate",
"contactus":"fa fa-phone", "forum":"","logisticinformation":"",
"sourcedownload":"fa fa-download","trade":"fa fa-shopping-cart","users":"fa fa-user",
"wechatuser":"fa fa-user"}
更改model图标,通过model_icon来设置
class relativeFilesAdmin(object):
model = relativeFiles
extra = 0
model_icon = "fa fa-download"
inField = "company"

可选的图标可查看 font awesome,可自行下载最新的图标包来替换现有的
font awesome : http://fontawesome.dashgame.com/
5、显示排序
通过ordering配置
class ProductListAdmin(object):
...
ordering = ["sales_num",]
6、只读字段:
readonly_fields = ["",""],如果想要自定义只读字段显示方式,可以重写get_readonly_fields():函数
7、不包含及不在list列表界面显示
exclude = ["",""]
注意,exclude和readonly_fields是冲突的,配置了readonly_fields,则exclude是无效的
8、inlineAdmin嵌套编辑
假设A是B的外键
class AAdmin(object):
model = A
extra = 1
class BAdmin(object):
list_display = ["",""]
inlines = [A,]
这样在编辑B的时候,就可以同时对A进行增删改查
但是要注意一个问题,这里的A,里面一定要写明model =A,不能像B写list_display = [""],否则会报错 'NoneType' object has no attribute '_meta'
extra:表示的是在编辑B的时候,展示几个A的可编辑框。不设置的话默认是3个,设置为0的话,则表示A编辑框是收起的。

9、两个管理器管理一张表
对于A 继承B 的情况,我们可以对A和B使用同一张表来管理,而不用分别为A和B建立表
10、Xadmin中的View对应含义:
1)views-->base.py:
BaseAdminView:所有的AdminView的基类,继承自BaseAdminObject和Djano.views.generic.View,注册在该View上的插件 可以影响所有的AdminView,对应的模板是 base.html
CommAdminView:继承于BaseAdminView,此类是用户登录后显示用到的View,也是登录后所有View的基类。该类的主要作用是创建Xadmin的通用元素,如系统菜单,用户信息等全局设置。
所有 关于菜单,列表界面显示的样式等 都可以在此类中完成设置,如上面2中设置全局的属性用到的就是此基类。
此基类对应的模板为:base_site.html, include/sitemenu_default.html
ModelAdminView:基于model的AdminView的基础类,注册的插件可以影响所有基于model的view
如我们在model里面设置的verbose_name,注册model时设置的model_icon等 通过在此类中展示
2)views-->list.py
ListAdminView:model列表页面view,它实现了数据排序和分页功能
包含的可选择设置属性:
list_display = [] | () 可以是列表或者元组,设置要在list界面展示的字段
list_display_link = () 设置作为链接去展示详情的字段
search_fields = () 设置搜索字段
ordering = () 设置排序字段
3)views-->edit.py
ModelFormAdminView:model编辑页面View
此类是一个基类,CreateAdminView和UpdateAdminView继承自此类
options 属性:
readonly_fields = () #定义只读字段
exclude = ["",""] #定义的字段不会显示在编辑界面,但是和readonly_fields使用冲突,定义了readonly_fields的字段再定义exclude是无效的
style_fields = () #定义该字段样式 如 style_fields= ("content":"ueditor"),以富文本方式展示
save_as = True/False #是否显示另存为按钮
form_layout = () #可以自定义detail界面的样式:
def get_form_layout(self):
self.form_layout = (
Main(
Fieldset("title",
Row("name", "index"),
"link"
),
Fieldset("title",
Row("name", "index"),
"link"
),
),
Side(...)
)
return super(modelAdmin, self).get_form_layout()
relfield_style = "fk-ajax" # 对于下拉框采用ajax异步搜索加载的方式呈现
list_editable = ["",""] #直接以可编辑的方式展示,无需点开详情界面即可编辑
CreateAdminView(ModelFormAdminView): model创建页面View
UpdateAdminView(ModleFormAdminView):model修改页面View
4)views--->delete.py
DeleteAdminView(ModelFormAdminView):mode删除页面View
5)views---->detail.py
DetailAdminView(ModelFormAdminView):model详情页面View
二、xadmin----简单使用的更多相关文章
- 设计模式(二)简单工厂模式(Simple Factory Pattern)
一.引言 这个系列也是自己对设计模式的一些学习笔记,希望对一些初学设计模式的人有所帮助的,在上一个专题中介绍了单例模式,在这个专题中继续为大家介绍一个比较容易理解的模式——简单工厂模式. 二.简单工厂 ...
- spring事务详解(二)简单样例
系列目录 spring事务详解(一)初探事务 spring事务详解(二)简单样例 spring事务详解(三)源码详解 spring事务详解(四)测试验证 spring事务详解(五)总结提高 一.引子 ...
- mininet(二)简单的路由实验
mininet(一)实验环境搭建 mininet(二)简单的路由实验 mininet(三)简单的NAT实验 在网上找了 好几个代码都是不能直接复现成功,这里把自己实现成功的代码给大家演示一下. 实验的 ...
- salesforce 零基础学习(四十二)简单文件上传下载
项目中,常常需要用到文件的上传和下载,上传和下载功能实际上是对Document对象进行insert和查询操作.本篇演示简单的文件上传和下载,理论上文件上传后应该将ID作为操作表的字段存储,这里只演示文 ...
- Jmeter 快速入门教程(二)--创建简单web测试
[版权所有: whoistester.com & jmeter.cf] http://wenku.baidu.com/linkurl=9zc4VHe6vUUeMdDZPpNsRehkazZFw ...
- MyBatis之二:简单增删改查
这一篇在上一篇的基础上简单讲解如何进行增删改查操作. 一.在mybatis的配置文件conf.xml中注册xml与注解映射 <!-- 注册映射文件 --> <mappers> ...
- <数据结构基础学习>(二)简单的时间复杂度分析
一.简单的复杂度分析 O(1) O(n) O(logn) O(logn) O(n^2) 大O描述的是算法的运行事件和输入数据之间的关系 Eg: 数组求和 public static int sum(i ...
- 计蒜客-跳跃游戏二 (简单dp)
题目链接:https://nanti.jisuanke.com/t/20 跳跃游戏二 给定一个非负整数数组,假定你的初始 ...
- spring-data-jpa快速入门(二)——简单查询
一.方法名解析 1.引言 回顾HelloWorld项目中的dao接口 public interface GirlRepository extends JpaRepository<Girl, In ...
- 初入码田--ASP.NET MVC4 Web应用开发之二 实现简单的增删改查
初入码田--ASP.NET MVC4 Web应用之创建一个空白的MVC应用程序 初入码田--ASP.NET MVC4 Web应用开发之一 实现简单的登录 2016-07-29 一.创建M002Adm ...
随机推荐
- spark查看DF的partition数目及每个partition中的数据量【集群模式】
println("--------------------"+data.rdd.getNumPartitions) // 获取DF中partition的数目 val partiti ...
- Spark SQL整体架构
0.整体架构 注意:Spark SQL是Spark Core之上的一个模块,所有SQL操作最终都通过Catalyst翻译成类似的Spark程序代码被Spark Core调度执行,其过程也有Job.St ...
- You (root) are not allowed to access to (crontab) because of pam configuration
巡检发现一台Linux服务器上的作业没有如期发送邮件,登录服务器检查后发现作业并没有执行,于是检查一下crontab的设置.结果发现如下错误: [root@mylnx2 ~]# crontab -l ...
- web前端(1)——了解什么是前端,以及与后端的关系
简介 1.什么是web前端 说这个之前,我们先了解web前端工程师是干什么的,百度百科的解释: Web前端开发工程师,主要职责是利用(X)HTML/CSS/JavaScript/Flash等各种Web ...
- 自动化测试基础篇--Selenium单选框(Radio)复选框(CheckBox)
摘自:https://www.cnblogs.com/sanzangTst/p/7686602.html 一.什么是单选框.复选框? 二.单选框:radio 三.复选框:checkbox 四.判断是否 ...
- Android 模块构建错误不能下载依赖包
在模块的build.gradle里面添加了 implementation 'com.android.support:design:26.1.0' 构建的时候一直报这个错 Unable to resol ...
- Linux atop 监控系统状态
atop是一个功能非常强大的linux服务器监控工具,它的数据采集主要包括:CPU.内存.磁盘.网络.进程等,并且内容非常的详细,特别是当那一部分存在压力它会以特殊的颜色进行展示,如果颜色是红色那么说 ...
- C++借助curses库实现俄罗斯方块
主要要实现如下几个功能:方块的移动控制.方块变形.判定方块是否接触边界和进行方块堆积.对方块进行消除. 1.方块的移动控制上下左右四个方向上-->变形,下-->加速下落,左-->向左 ...
- 【项目 · Wonderland】立项报告
[软件工程实践 · 团队项目] 第二次作业 团 队 作 业 原 文:http://www.cnblogs.com/andwho/p/7598662.html Part 0 · 简 要 目 录 Part ...
- 【teradata】强制解锁
使用加锁用户释放锁,也可以用其它用户使用如下语句强制解锁 Release lock (pdm_data ),Override