调试Django表单验证错误
我有一个表单在执行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 个回答
5
你真的应该学会如何在Django和它自带的服务器上使用调试工具,这样可以省去很多打印输出和反复修改代码的麻烦。
调试Python应用程序最基本的方法就是使用pdb。只需要在你想调试的代码里加上这两行:
import pdb
pdb.set_trace()
当第二行代码执行时,程序会在那一行停下来。这时你需要切换到控制台,你可以查看变量的状态和内容,执行下一行代码,跳到下一个断点等等。只需输入 ? 然后按回车就可以了。
当然,如果你使用功能更强大的集成开发环境(IDE),调试会简单得多,但这可以让你大致了解如何使用调试工具。