Отладка ошибок проверки форм Django - PullRequest
2 голосов
/ 09 января 2010

Одна из моих форм не работает в 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 Ответ

4 голосов
/ 09 января 2010

Вы действительно должны научиться использовать отладчик с Django, и он встроен в сервер - он сэкономил мне массу выражений print / dir и бесконечные итерации редактирования-запуска-наблюдения-вывода.

Самый простой способ отладки приложений Python - это использование pdb Это так же просто, как вставить эти две строки кода:

import pdb
pdb.set_trace()

в той части кода, которую вы хотите отлаживать. Как только вторая строка выполнена, выполнение программы останавливается в этой точке, и вам нужно переключиться на консоль, и вы можете наблюдать за состоянием и содержимым переменных, выполнять следующую строку, переходить к следующей точке останова и так далее. Просто введите? и нажмите ввод. Конечно, если вы используете достаточно сложную отладку IDE, это намного проще, чем это, но это должно дать вам общее представление о том, как использовать отладчик.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...