我的一个表单在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上传没有问题)但它仍然失败...无论如何,我无能为力......
答案 0 :(得分:4)
你真的应该学习如何在Django中使用调试器并且它内置在服务器中 - 它为我节省了大量的print / dir表达式和无休止的edit-run-observe输出编辑迭代。
调试python应用程序的最基本方法是使用pdb 这就像放入这两行代码一样简单:
import pdb
pdb.set_trace()
在您要调试的那部分代码中。一旦执行第二行,程序执行就会在此时停止,您必须切换到控制台,您可以观察变量的状态和内容,执行下一行,转到下一个断点等等。只需输入?然后按Enter键。 当然,如果你使用足够复杂的IDE调试比这更容易,但这应该让你大致了解如何使用调试器。