Форум сайта python.su
Есть форма
<form action="" method="post">
<div>
<label for="id_login">Логин:</label>
{{ form.login }}
</div>
</form>
class CreateProfileForm(forms.Form):
login = forms.CharField(max_length=150, required=True)
class Profile(models.Model):
login = models.CharField(max_length=150)
def enter_person(request):
if request.method == 'POST':
createProfileForm = CreateProfileForm(request.POST)
if createProfileForm.is_valid():
personData = createProfileForm.cleaned_data
if personData == None:
return HttpResponseRedirect(reverse('blog_arhive'))
profile = Profile()
profile.login = personData['login']
profile.save()
return HttpResponseRedirect(reverse('create_profile'))
else:
createProfileForm = CreateProfileForm()
t = loader.get_template("person/create_profile.html")
c = Context({'form': createProfileForm})
return HttpResponse(t.render(c))
Django Version: 1.2.1
Exception Type: TypeError
Exception Value: 'NoneType' object is unsubscriptable
Отредактировано (Май 31, 2010 14:42:35)
Офлайн
Какую отладку вы уже совершили? Какие результаты?
Офлайн
Я не знаю какую методику для тестирования провести, чтобы выявить причину… Делаю вроде все правильно.
Django 1.2 Ubuntu 10.04
В post (во время дебага, когда браузер отдает ошибку) В POST'е мои данные в переменной присутствуют в таком виде
login u'fill'
Офлайн
А вы класс формы нам полностью показали?
Офлайн
Неа, не полностью. Вот полный класс формы (я не хотел загружать однообразным кодом проблему)
Для начала, если передаю переменную не через cleaned_data, а через request.POST - то все нормально передается. Вот класс формы
class CreateProfileForm(forms.Form):
login = forms.CharField(max_length=150, required=True)
password = forms.CharField(max_length=150, widget=forms.PasswordInput, required=True)
eq_password = forms.CharField(max_length=150, widget=forms.PasswordInput, required=True)
city = forms.CharField(max_length=150, required=False)
def clean(self):
data = self.cleaned_data
if "password" in data and "eq_password" in data and data["password"] != data["eq_password"]:
raise forms.ValidationError("Passwords must be same")
Отредактировано (Июнь 1, 2010 15:53:54)
Офлайн
clean должен возвращать словарь резельтатов
Офлайн
Да, все поправилось. Спасибо Вам. В следующий раз буду внимательнее читать мануалы.
Офлайн