xadmin导入excel插件拓展

本文介绍了如何在Django的xadmin中扩展Excel导入功能,包括在xadmin/plugins创建excel.py文件,调整__init__.py注册插件,制作导入模板,以及在项目配置和adminx.py中进行相应设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、在/site-packages/xadmin/plugins中新增excel.py文件

文件内容:

[Python] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

import xadmin

 

from xadmin.views import BaseAdminPlugin, ListAdminView

 

from django.template import loader

 

from  xadmin.plugins.utils import get_context_dict

 

class ListImportExcelPlugin(BaseAdminPlugin):

 

    import_excel = False

 

    def init_request(self, *args, **kwargs):

 

        return bool(self.import_excel)

 

    def block_top_toolbar(self, context, nodes):

 

        nodes.append(

 

            loader.render_to_string('xadmin/excel/model_list.top_toolbar.import.html', get_context_dict(context)))

 

xadmin.site.register_plugin(ListImportExcelPlugin, ListAdminView)



注意:Django2.0以后rander_to_string的第二个参数必须为dict格式,导入了get_context_dict方法,将context转换

2、将execl.py插件注册到xadmin的plugins中,修改site-packages/xadmin/plugins的__init__.py,

3、创建导入模板
xadmin/excel/model_list.top_toolbar.import.html

文件内容:
 

[HTML] 纯文本查看 复制代码

?

001

002

003

004

005

006

007

008

009

010

011

012

013

014

015

016

017

018

019

020

021

022

023

024

025

026

027

028

029

030

031

032

033

034

035

036

037

038

039

040

041

042

043

044

045

046

047

048

049

050

051

052

053

054

055

056

057

058

059

060

061

062

063

064

065

066

067

068

069

070

071

072

073

074

075

076

077

078

079

080

081

082

083

084

085

086

087

088

089

090

091

092

093

094

095

096

097

098

099

100

101

102

103

104

105

106

107

108

109

{% load i18n %}

 

<div class="btn-group export">

 

  <a class="dropdown-toggle btn btn-default btn-sm" data-toggle="dropdown" href="#">

 

    <i class="icon-share"></i> 导入 <span class="caret"></span>

 

  </a>

 

  <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">

 

      <li><a data-toggle="modal" data-target="#export-modal-import-excel"><i class="icon-circle-arrow-down"></i> 导入 Excel</a></li>

 

  </ul>

 

    <script>

 

        function fileChange(target){

 

            var imgName = document.all.submit_upload.value;

 

            var ext,idx;

 

            if (imgName == ''){

 

                document.all.submit_upload_b.disabled=true;

 

                alert("请选择需要上传的 xls 文件!");

 

                return;

 

            } else {

 

                idx = imgName.lastIndexOf(".");

 

                if (idx != -1){

 

                    ext = imgName.substr(idx+1).toUpperCase();

 

                    ext = ext.toLowerCase( );

 

                    if (ext != 'xls' && ext != 'xlsx'){

 

                        document.all.submit_upload_b.disabled=true;

 

                        alert("只能上传 .xls 类型的文件!");

 

                        return;

 

                    }

 

                } else {

 

                    document.all.submit_upload_b.disabled=true;

 

                    alert("只能上传 .xls 类型的文件!");

 

                    return;

 

                }

 

            }

 

        }

 

    </script>

 

    <div id="export-modal-import-excel" class="modal fade">

 

      <div class="modal-dialog">

 

        <div class="modal-content">

 

          <form method="post" action="" enctype="multipart/form-data">

 

              {% csrf_token %}

 

          <div class="modal-header">

 

            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>

 

            <h4 class="modal-title">导入 Excel</h4>

 

          </div>

 

          <div class="modal-body">

 

               <input type="file" name="excel" id="submit_upload">

 

          </div>

 

          <div class="modal-footer">

 

            <button type="button" class="btn btn-default" data-dismiss="modal">{% trans "Close" %}</button>

 

            <button class="btn btn-success" type="submit" id="submit_upload_b"><i class="icon-share"></i> 导入</button>

 

          </div>

 

          </form>

 

        </div>

 

      </div>

 

    </div>

 

</div>



4.在Django项目的配置文件INSTALLED_APP中添加xadmin和crispy_froms
5.在应用中新建adminx.py文件,后台管理模型如需导入excel文件的,设置import_excel=True,则在该模型类的后台管理页面出现导入按钮

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值