django2集成xadmin list index out of range报错追踪和处理

Django使用Xadmin中,报错list index out of range Django使用Xadmin中,报错list index out of range 原因: 在创建Model时,如果存在DatetimeField的字段,在xadmin后台管理页面中,对该model添加操作时,会报list index out of range的错误 即下图报错: 解决办法: 找到报错最后一行 点击红色框中的代码,找到如下代码: def render(self, name, va... 阅读详情

今天又搞起了django,个人爱好用最新版的,所以虽然比着老师的视频做,还是出了莫名其妙的问题

IndexError at /xadmin/goods/goods/add/
list index out of range

遇到了数组越界
贴下报错信息,当然这个看不出什么,数组越界,这菜鸟都能看懂的英文

Error during template rendering
In template /Users/seth/pyenv/imooc_env36/lib/python3.6/site-packages/crispy_forms/templates/bootstrap3/field.html, error at line 28

{% if field|is_checkbox and form_show_labels %}

这里写图片描述

顺便上张图
一般人看到这里就懵了,反正只知道数组越界,天知道什么原因,然后把这个图贴给别人。
淡定,django的报错很详细的,往下看
这里写图片描述
很明显是时间这边出了问题
时间add_time的字段类型出了问题
先说下django的时间字段类型
有3个,这里直接贴网上的

需要了解跟时间相关的三个modelField,
DateTimeField和DateField和TimeField
存储的内容分别对应着datetime(),date(),time()三个对象。
    对于auto_now和auto_now_add。两者默认值都为False。
    auto_now=Ture,字段保存时会自动保存当前时间,但要注意每次对其实例执行save()的时候都会将当前时间保存,也就是不能再手动给它存非当前时间的值。
    auto_now_add=True,字段在实例第一次保存的时候会保存当前时间,不管你在这里是否对其赋值。但是之后的save()是可以手动赋值的。也就是新实例化一个model,想手动存其他时间,就需要对该实例save()之后赋值然后再save()。

随便拷贝了一句,大概只是介绍了auto_now和auto_now_add,和我们报错无关,这里只是拓展一下三个时间类型,
然后我们来看这datetime(),date(),time()3个对象

date “1000-01-01”到“9999-12-31” 3字节
time “-838:59:59”到“838:59:59” 3字节
datetime “1000-01-01 00:00:00” 到“9999-12-31 23:59:59” 8字节

date :“yyyy-mm-dd”格式表示的日期值 
time :“hh:mm:ss”格式表示的时间值 
datetime: “yyyy-mm-dd hh:mm:ss”格式

修改时间格式为DateField,完美解决,
有些人不乐意了,按天的新增时间还有毛用,是的,问题解决了,但业务逻辑不对了

这里写图片描述

回到之前被忽略的xadmin的第80行代码报错提示
找到相关代码

return mark_safe('<div class="datetime clearfix"><div class="input-group date bootstrap-datepicker"><span class="input-group-addon"><i class="fa fa-calendar"></i></span>%s'
                         '<span class="input-group-btn"><button class="btn btn-default" type="button">%s</button></span></div>'
                         '<div class="input-group time bootstrap-clockpicker"><span class="input-group-addon"><i class="fa fa-clock-o">'
                         '</i></span>%s<span class="input-group-btn"><button class="btn btn-default" type="button">%s</button></span></div></div>' % (input_html[0], _(u'Today'), input_html[1], _(u'Now')))

input_html[1]就是报错的代码,因为input_html里只有一个元素,从报错信息里也能找到input_html的值
这里写图片描述
仔细看input_html长度是为1的,所以没办法取到值
再看上一行代码,作者是想通过用“\n”把input_html里的两个标签拆开,但两个标签之间没有换行,所以没能拆分,导致报错。

input_html = [ht for ht in super(AdminSplitDateTime, self).render(name, value, attrs).split('\n') if ht != '']

但是,作者当初这样写,肯定是能把两个拆开的,为什么忽然不行了呢?
这里写图片描述
我们来看看这个forms是哪个html的
ctrl点MultWidget进去
这里写图片描述
找到html了

{% spaceless %}{% for widget in widget.subwidgets %}{% include widget.template_name %}{% endfor %}{% endspaceless %}

里面就一句话,先补充一下spaceless标签

spaceless标签:

用法:{% spaceless %}…内容…{% endspaceless %}

含义:删除包围内容中的所有tab或者回车字符

所以自然xadmin那边的代码就错误了
来看下作者的提交记录
https://github.com/django/django/commit/47681af34447e5d45f3fdb316497cdf9fbd0b7ce
这里写图片描述
英文不太好,不过意思应该是空格会导致多个widget的时候显示有问题,所以就加了spaceless标签
问题找到了,
但是django毕竟是主框架,我们尽量不要动他的代码,
我们来修改xadmin的代码
原来使用\n分割的
我们把代码改成下面这样

input_html = [ht for ht in super(AdminSplitDateTime, self).render(name, value, attrs).split('/><') if ht != '']
input_html[0] = input_html[0] + "/>"
input_html[1] = "<" + input_html[1]

原来的代码不要删,如图,注释掉就好

这里写代码片
但有人可能还不明白了,怎么date类型就不出错,其实上面写了,data是年月日,datetime是年月日时分秒就要2个widget显示了,所以就出问题了

文章参考https://blog.youkuaiyun.com/yuhan963/article/details/79167743,感谢作者

Django2集成xadmin详解-4-list index out of range报错追踪和处理 一 问题说明 在创建Model的时候,如果存在类型是DateTimeField的字段,则在xadmin后端管理界面里,对该Model进行添加操作的时候,会报list index out of range。 这是上篇文章创建的Model: class IDC(models.Model): name = models.CharField(max_length=64) cont 阅读详情

相关推荐

Oracle19c时区升级实战:从32到42版本的数据泵TSTZ报错解决方案

本文详细介绍了Oracle19c时区版本从32升级到42的实战步骤,重点解决数据泵TSTZ报错问题。通过检查时区版本、下载补丁包、应用补丁及执行升级脚本等关键操作,确保数据库时区数据更新,避免夏令时转换错误和历史时区规则不匹配等问题。文章还提供了常见问题排查和升级后的注意事项,帮助DBA高效完成时区升级任务。

n7o8p的博客 285

如何在Django中进行调试,好方法? [关闭]

因此,我开始学习使用Python和更高版本的Django进行编码。 第一次很难查看回溯,实际上要弄清楚我做错了什么以及语法错误在哪里。 现在已经过去了一段时间,而且我想我已经有了调试Djang

asdfgh0077的博客 1765

linux 4.19在龙芯平台上编译出错解决方法

OS: Loongnix server 1.7 工具链为:系统自带的gcc-4.8.5 和 gcc-7.3 平台:3A3000/3A4000 源码:kernel: 4.19 编译步骤 ··· make loongson3_defconfig make -j4 ··· 出错信息: HOSTCC arch/mips/boot/compressed/calc_vmlinuz_load_addr arch/mips/boot/compressed/head.S: Assembler messages: arch/m

sense的专栏 1125

IndexError: list index out of range

最近遇到一个问题,我有一个三维列表,我要找到符合我条件的一维列表,然后把它所在的二维列表删除。由于数据涉及到一些问题,这里我自己随便写了一个三维列表。 于是就报了错,这个错误的意思是我写入的元素位置超过了列表的长度。 那么为什么会这样呢,因为我从列表的头部开始删除,删除之后列表的长度就会变短,那么后面的元素自然就超出了长度。 那么我们换个角度继续进行,使出一招围魏救赵 ,我把位置拿出来,然后从后面开始删除。 此时我又遇到了一个问题,删多了。 原因是因为我的位置写入这一步是在循环中,也...

Zhong____的博客 381

opencode 完全指南:终端AI编程助手的安装、模型配置与实战

在AI编程助手快速迭代的当下,开发者对终端环境下的自动化编码需求愈发强烈。以自然语言驱动代码修改、命令执行与测试验证,已成为提升工程效率的重要方向。这类工具普遍遵循模型无关的设计原则,通过兼容OpenAI格式的接口接入多种大模型,并借助多会话管理、Skills、Memory等机制实现可审查、可干预的闭环流程。从安装配置到日常使用,再到apihub网关与免费模型的接入,终端AI助手在代码审查、跨文件重构、浏览器自动化验证等场景中展现出独特价值。本文聚焦opencode这一开源CLI工具,详细拆解其核心定位、模

weixin_33868027的博客 419

数学不好是原罪——高等数学笔记(汇总版)

这是本人之前考研的高数手写笔记,工科学硕数一考了146(满分150),笔记有一定参考价值,欢迎大家收藏借鉴。

xuuyann 5万+

已解决IndexError: list index out of range异常的正确解决方法,亲测有效!!!

已解决IndexError: list index out of range异常的正确解决方法,亲测有效!!!

小明的Java问道之路 9万+

Keil5安装多版本共存方案:实用技巧分享

分享Keil5安装过程中实现多版本共存的实用方法,解决开发环境冲突问题。通过合理配置路径与版本管理,让keil5安装更高效稳定,提升嵌入式开发体验。

weixin_42514750的博客 1534

(input_html[1]) IndexError: list index out of range Django xadmin安装

环境django2.2.4 python3.7 xadmin 0.6 将xadmin源包放入extra_app,在用户信息修改界面出现IndexError: list index out of range 错误 查找网上资料 首先排除了数据库moudle的问题 发现/Users/sailor/Desktop/DjangoStudy/extra_app/xadmin/widgets.py", ...

weixin_39418139的博客 488

2019年电赛D题《简易电路特性测试仪》全过程

2019年全国大学生电子设计大赛D题《简易电路特性测试仪》硬件部分及故障分析

zzhao2580的博客 5万+

遗传算法解整数规划IntCon

x = ga(fun,nvars,A,b,[],[],lb,ub,nonlcon,IntCon) IntCon就是代表整数的参量,描述的是哪几个自变量是0-1整数变量。比如navrs设置有4个变量,设置IntCon为[2 3],代表第2和第3个变量是整数。 再比如设置IntCon=2:2:nvars,代表偶数项的变量是整数。 值得注意的是一旦设置了非空的IntCon,则Aeqandbeqmust be an empty entry ([]), andnonlconmust re...

jianti9962的博客 9220

django2集成xadmin list index out of range报错追踪和处理

第一种解决方法: 参考:https://blog.youkuaiyun.com/sethcss/article/details/79768170 input_html = [ht for ht in super(AdminSplitDateTime, self).render(name, value, attrs).split('/><') if ht != ''] input_html[0]...

ganghaodream的博客 276

【气候极端指数】MATLAB计算各种气候极端指数

简介各类气候极端指数,及其MATLAB计算代码

WW、forever的博客 4917

Django2集成xadmin2详解-4-list index out of range报错追踪和处理

问题原因 报错代码的目录 venv\lib\site-packages\xadmin\widgets.py in render, line 80 具体代码 def render(self, name, value, attrs=None): input_html = [ht for ht in super(AdminSplitDateTime, self).re

Cand6oy的博客 955

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

[Django3.0]安装Xadmin,与报错问题解决

报错 pip install xadmin 报: UnicodeDecodeError: 'gbk' codec can't decode byte 0xa4 in position 3444: illegal multibyte sequence 原因是README.rst的编码问题,不能用GBK解码 所以用记事本重新写一下README.rst文件就可以,内容不变,只是保存文件的编码 解决报...

kzl_knight的博客 1304

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

django.template.exceptions.TemplateDoesNotExist: ueditor.html

1、今天在公司新电脑上部署官网Django环境遇到个坑爹的问题。 先把错误报上来: 2、意思就是没有ueditor.html这个模板。 找了很久,都没有找到问题在哪。后来发现。是因为Xadmin的文件夹extra_appss没有设置为Sources Root。 3、解决办法,将其右键设置为Sources Root文件夹,错误即可消失。 ...

王帅的博客 748

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

django xadmin报错“TemplateDoesNotExist at /xadmin/goods/goods/52/update/ ueditor.html”

django xadmin报错“TemplateDoesNotExist at /xadmin/goods/goods/52/update/ ueditor.html” 报错详情 Internal Server Error: /xadmin/goods/goods/52/update/ Traceback (most recent call last): File "F:\Projects\V...

Darkman_EX的博客 3436

django2.1.7配置xadmin以及bug解决方案

强大的Django框架为我们自带了admin后台管理系统,为我们的开发省去了很多的事情,但有一个不好的地方,就是自带的admin系统太丑了!影响着我们操作后台的心情,因此很有必要换一个漂亮的后台管理系统,Xadmin就提供了这样一个系统。Xadmin基于bootstrap3,页面相对admin要美观许多,Xadmin作为一款全面的后台管理系统框架,不仅提供了基本的CRUD功能,还内置了丰富的插件功...

徳 746

xadmin的html文件,django xadmin(2) 在xadmin基础上完成自定义页面

1.在xadmin.py,GlobalSettings中自定义菜单2.自定义视图函数,并获取原来的菜单等一下信息(主要是为了用xadmin的模板),具体的自己看xadmin源码3.在adminx.py中注册路由4.html继承。例:xadmin.py:class GlobalSettings(object):site_title = "后台"site_footer = "xxxx"# menu_s...

weixin_39850981的博客 377

IndexError: list index out of range的错误原因及解决方案

本人在读取txt文件时遇到IndexError: list index out of range 如下图: 于是检查错误原因,加入如下代码: 以指导rows一共有20662行,往下翻结果,还是报错了: 意味着在读取rows的第9411行时出错了,这意味在9411可能存在list[index]的index超出范围,或者出现list[0]的原因。 因此只要跳过index超出范围,或者出现list...

qq_33731081的博客 21万+
上一篇: linux中文乱码
下一篇: 什么是全栈,Full Stack Developer
sethcss
博客等级 码龄9年 7粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值