Django-Xadmin的布局自定义方式

一、前言

本Part,将介绍Django-Xadmin的布局自定义方式。

参考了UserAdmin的布局改写:https://www.cnblogs.com/adc8868/p/7506973.html

但是我门总是不仅仅局限于用户管理这个页面的改写,所以本Part将以practise.Basic这个录入控件案例为例,介绍如何在Xadmin快速布局。

二、目录结构总览

1、本part,我们在这个结构下进行代码填充:

Project 目录 (Django-Xadmin学习项目)
|
|-- app
|   `-- practise
...

三、官方代码

1、首先我们先看看Xadmin中UserAdmin的布局是怎么写的
(1)如果是extra_app拷到项目中的,则找到这个路径

打开项目中的:/extra_app/
找到这个文件:xadmin/plugins/auth.py

(2)如果是pip安装到Python环境中的,则找到这个路径

到你的Python环境:D:\Programs\Python\Python36\venv\xadmin_learn\Lib\site-packages
找到这个文件:xadmin/plugins/auth.py

2、找到UserAdmin类的get_form_layout方法(大概在83行):

...
class UserAdmin(object):
  ...
  def get_form_layout(self):
      ...

3、对着用户管理界面,学习布局的代码。

四、效果图

1、首先这次我们要对practise.Basic的布局进行改造,我们看看原来的布局是怎么样的

原来的布局

2、再看看自定义布局后的样子

自定义的布局

3、可以看出来,布局可以更紧凑,更灵活

五、追加代码

1、在project/app/practise/adminx.py的class BasicAdmin,属性的下方,追加这个方法:

# -*- coding: utf-8 -*-
import xadmin
# 这也是追加的
from django.utils.translation import ugettext as _
from xadmin.layout import Fieldset, Main, Side, Row

from .models import Basic

class BasicAdmin(object):
    list_display = [‘input_single‘]  # 控制显示列数  
    search_fields = [‘input_single‘]  # 控制搜索框的显示
    list_filter = [‘input_single‘]  # 控制筛选

    # 这是追加的
    def get_form_layout(self):
        self.form_layout = (
            Main(
                Fieldset(_(‘文本录入案例‘),
                         ‘input_single‘,
                         ‘input_multi‘,
                         ‘input_slug‘,
                         Row(‘input_integer‘, ‘input_positive_integer‘,),
                         Row(‘input_float‘, ‘input_big_integer‘, ),
                         ),
                Fieldset(_(‘日期录入案例‘),
                         Row(‘input_date‘, ‘input_time‘),
                         ‘input_datetime‘
                         ),
                Fieldset(_(‘网络录入案例‘),
                         ‘input_url‘,
                         ‘input_email‘,
                         ‘input_generic_ip‘,
                         ),
                Fieldset(‘‘,
                         ‘add_time‘,
                         css_class=‘unsort no_title‘
                         ),
            ),
            Side(
                Fieldset(_(‘其他‘),
                         ‘input_null_boolean‘
                         ),
                Fieldset(_(‘其他‘),
                         ‘input_null_boolean‘
                         ),
            )
        )
        return super(BasicAdmin, self).get_form_layout()

xadmin.site.register(Basic, BasicAdmin)

2、从代码可以看出,要进行自定义xadmin布局,要做2个步骤:
(1)在import上引入了一些依赖;
(2)在class里面,追加了一个方法“get_form_layout(self)”

3、其中“get_form_layout(self)”方法和UserAdmin中“get_form_layout(self)”最大的不同,是UserAdmin多了一行

if self.org_obj:

的判断,而我们自己定义的类中,是不需要这个判断的。

作者:不愿透露姓名的撸大湿
链接:https://www.jianshu.com/p/c381832dc5ff
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

原文地址:https://www.cnblogs.com/skbarcode/p/12569246.html

时间: 2024-10-31 08:00:42

Django-Xadmin的布局自定义方式的相关文章

Django rest framework 使用自定义认证方式

Django rest framework 使用自定义认证方式 Django使用自定义认证方式 介绍了 "Django使用自定义认证方式",这一篇说说怎样在前一篇的基础上提供rest api. 修改settings.py中INSTALLED_APPS,添加 'login' app. 给login app增加serializers.py文件 #coding:utf-8 from django.contrib.auth.models import User from rest_framew

源码剖析Django REST framework的认证方式及自定义认证

源码剖析Django REST framework的认证方式 由Django的CBV模式流程,可以知道在url匹配完成后,会执行自定义的类中的as_view方法. 如果自定义的类中没有定义as_view方法,根据面向对象中类的继承可以知道,则会执行其父类View中的as_view方法 在Django的View的as_view方法中,又会调用dispatch方法. 现在来看看Django restframework的认证流程 Django restframework是基于Django的框架,所以基

Django+xadmin打造在线教育平台(三)

Django+xadmin打造在线教育平台(三)   代码 github下载 五.用户注册 主要实现功能 用户输入邮箱.密码和验证码,点注册按钮 如果输入的不正确,提示错误信息 如果正确,发送激活邮件,用户通过邮件激活后才能登陆 即使注册功能,没有激活的用户也不能登陆 5.1.初步视图 users/views.py class RegisterView(View): '''用户注册''' def get(self,request): return render(request,'register

第三百八十节,Django+Xadmin打造上线标准的在线教育平台—将所有app下的models数据库表注册到xadmin后台管理

第三百八十节,Django+Xadmin打造上线标准的在线教育平台-将所有app下的models数据库表注册到xadmin后台管理 将一个app下的models数据库表注册到xadmin后台管理 重点:xadmin的数据表注册,是到app下查找的adminx文件,所以我们必须在app下创建一个adminx.py文件,所有关于数据表注册到xadmin后台的代码都是写在adminx.py文件里 adminx.py文件编写 1.自定义一个类来继承object对象,这个类叫做数据表管理器 数据表管理器里

第三百八十七节,Django+Xadmin打造上线标准的在线教育平台—网站上传资源的配置与显示

第三百八十七节,Django+Xadmin打造上线标准的在线教育平台-网站上传资源的配置与显示 首先了解一下static静态文件与上传资源的区别,static静态文件里面一般防止的我们网站样式的文件,包括ccs,js,网站样式图片 上传资源是用户操作上传的图片等资源 上传资源的配置 1,首先在项目里创建一个名称叫media的文件夹专门保存用户上传 2,settings.py文件配置上传资源的路径 # 上传资源路径,如果图片,上传文件等 MEDIA_URL = '/media/' # 设置上传资源

第三百八十三节,Django+Xadmin打造上线标准的在线教育平台—路由映射与静态文件配置

第三百八十四节,Django+Xadmin打造上线标准的在线教育平台-路由映射与静态文件配置以及会员注册 基于类的路由映射 from django.conf.urls import url, include # 导入django自在的include逻辑 from django.contrib import admin from django.views.generic import TemplateView # 导入django自带的TemplateView逻辑 import xadmin #

第三百八十九节,Django+Xadmin打造上线标准的在线教育平台—列表筛选结合分页

第三百八十九节,Django+Xadmin打造上线标准的在线教育平台-列表筛选结合分页 根据用户的筛选条件来结合分页 实现原理就是,当用户点击一个筛选条件时,通过get请求方式传参将筛选的id或者值,传入逻辑处理就行数据库条件查询,将查询条件值在返回html页面判断是否是选中样式,最后将所有需要关联的筛选请求加上彼此逻辑处理传回来的查询条件值 html请求传参 黄色背景为请求传参 红色背景为逻辑处理传过来的查询条件判断样式 <div class="wp butler_list_box li

第三百八十五节,Django+Xadmin打造上线标准的在线教育平台—登录功能实现,回填数据以及错误提示html

第三百八十五节,Django+Xadmin打造上线标准的在线教育平台-登录功能实现 1,配置登录路由 from django.conf.urls import url, include # 导入django自在的include逻辑 from django.contrib import admin from django.views.generic import TemplateView # 导入django自带的TemplateView逻辑 import xadmin # 导入xadmin fr

第三百八十一节,Django+Xadmin打造上线标准的在线教育平台—xadmin全局配置

第三百八十一节,Django+Xadmin打造上线标准的在线教育平台-xadmin全局配置 1.xadmin主题设置 要使用xadmin主题,需要在一个app下的adminx.py后台注册文件里,写一个主题管理器绑定xadmin的views.BaseAdminView注册一般我们会在用户相关的app下的adminx.py后台注册文件里写 #!/usr/bin/env python # -*- coding:utf8 -*- import xadmin from xadmin import vie