【问题标题】:Debugging Django Forms validation errors调试 Django 表单验证错误
【发布时间】:2011-01-03 02:32:57
【问题描述】:

我的一个表单在 form.is_valid() 上失败

我第一次调试 Django 表单,所以我不太确定在哪里查看

forms.py

class ImageForm(forms.ModelForm):
def __init__(self,user,*args,**kwargs):
    super(ImageForm,self ).__init__(*args,**kwargs) # populates the form

class Meta:
    model = KMSImageP
    fields = ('name',
              'caption',
              'image',
              )

models.py

from photologue.models import ImageModel

class KMSImageP(ImageModel):

name = models.CharField(max_length=100)
slug = AutoSlugField(max_length=45, unique=True, populate_from='name')
num_views = models.PositiveIntegerField(editable=False, default=0)
caption = models.TextField(_('caption'), blank

我明白了

>>>> image_form.__dict__['_errors']
>>>>django.forms.util.ErrorDict({'image': django.forms.util.ErrorList([<django.utils.functional.__proxy__ object at 0xecc770>])})

所以我猜测我的“图像”字段(从抽象基类继承的 ImageField)是失败的原因,但我不知道为什么。

我尝试将属性的类型更改为 FileField(因为我的其他表单使用 FileField 上传没有问题)但它仍然失败......无论如何,我一无所知......

【问题讨论】:

  • 可以发布表单类定义。仅凭这一点很难弄清楚。
  • 并发布print form.errors['image']的结果
  • print form.errors['image']
    • 此字段为必填项。
    ...显然我确实选择了一个文件在提交之前,名称显示在字段旁边...
  • 用表单和类定义更新了问题
  • 有人吗?刚刚回到这个问题上,还没有解决它。

标签: python django django-forms


【解决方案1】:

你真的应该学习如何在 Django 中使用调试器,它内置在服务器中——它为我节省了很多打印/目录表达式和无休止的编辑-运行-观察输出-编辑迭代。

调试python应用程序的最基本方法是使用pdb 只需放入这两行代码即可:

import pdb
pdb.set_trace()

在您要调试的那部分代码中。第二行一执行,程序执行就停止了,你必须切换到控制台,你可以观察变量的状态和内容,执行下一行,转到下一个断点等等。只需键入?然后按回车。 当然,如果你使用足够复杂的 IDE 调试比这容易得多,但这应该让你大致了解如何使用调试器。

【讨论】:

猜你喜欢
  • 2020-11-22
  • 2016-03-20
  • 2011-02-21
  • 1970-01-01
  • 1970-01-01
  • 2013-04-01
  • 1970-01-01
  • 2015-03-14
  • 2011-02-01
相关资源
最近更新 更多