Найти - Пользователи
Полная версия: Не передается post из формы
Начало » Django » Не передается post из формы
1
dissdoc
Есть форма
<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)
Eсть модель
class Profile(models.Model):
login = models.CharField(max_length=150)
И есть вьюха (views.py)
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
И ссылается на то, что personData во вьюхе у меня None
На что мне следует обратить внимание? Почему не работает?

{update}
Чуть не забыл. Работаю с тестовым сервером, который к джанге прилагается. Может из-за этого?
Александр Кошелев
Какую отладку вы уже совершили? Какие результаты?
dissdoc
Я не знаю какую методику для тестирования провести, чтобы выявить причину… Делаю вроде все правильно.
Django 1.2 Ubuntu 10.04

В post (во время дебага, когда браузер отдает ошибку) В POST'е мои данные в переменной присутствуют в таком виде
login  	u'fill'
Т.е. действительно в post'е все присутствует… А вот когда для формы пытаюсь получить массив данных (createProfileForm.cleaned_data), почему-то выдается None…
Александр Кошелев
А вы класс формы нам полностью показали?
dissdoc
Неа, не полностью. Вот полный класс формы (я не хотел загружать однообразным кодом проблему)
Для начала, если передаю переменную не через 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")
Появилось сомнение по поводу переопределения clean, как только сбросил полный код формы…
Александр Кошелев
clean должен возвращать словарь резельтатов
dissdoc
Да, все поправилось. Спасибо Вам. В следующий раз буду внимательнее читать мануалы.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB