调试Django Forms验证错误

时间:2010-01-08 21:31:14

标签: python django django-forms

我的一个表单在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>])})

所以我猜我的'image'字段(从一个抽象基类继承的ImageField)是失败的原因,但我不知道为什么。

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

1 个答案:

答案 0 :(得分:4)

你真的应该学习如何在Django中使用调试器并且它内置在服务器中 - 它为我节省了大量的print / dir表达式和无休止的edit-run-observe输出编辑迭代。

调试python应用程序的最基本方法是使用pdb 这就像放入这两行代码一样简单:

import pdb
pdb.set_trace()

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