Уведомления

Группа в Telegram: @pythonsu

#1 Май 31, 2010 14:02:04

dissdoc
От:
Зарегистрирован: 2009-12-12
Сообщения: 273
Репутация: +  0  -
Профиль   Отправить e-mail  

Не передается post из формы

Есть форма

<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}
Чуть не забыл. Работаю с тестовым сервером, который к джанге прилагается. Может из-за этого?



Отредактировано (Май 31, 2010 14:42:35)

Офлайн

#2 Май 31, 2010 15:42:32

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Не передается post из формы

Какую отладку вы уже совершили? Какие результаты?



Офлайн

#3 Июнь 1, 2010 15:28:23

dissdoc
От:
Зарегистрирован: 2009-12-12
Сообщения: 273
Репутация: +  0  -
Профиль   Отправить e-mail  

Не передается post из формы

Я не знаю какую методику для тестирования провести, чтобы выявить причину… Делаю вроде все правильно.
Django 1.2 Ubuntu 10.04

В post (во время дебага, когда браузер отдает ошибку) В POST'е мои данные в переменной присутствуют в таком виде

login  	u'fill'
Т.е. действительно в post'е все присутствует… А вот когда для формы пытаюсь получить массив данных (createProfileForm.cleaned_data), почему-то выдается None…



Офлайн

#4 Июнь 1, 2010 15:42:50

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Не передается post из формы

А вы класс формы нам полностью показали?



Офлайн

#5 Июнь 1, 2010 15:52:29

dissdoc
От:
Зарегистрирован: 2009-12-12
Сообщения: 273
Репутация: +  0  -
Профиль   Отправить e-mail  

Не передается post из формы

Неа, не полностью. Вот полный класс формы (я не хотел загружать однообразным кодом проблему)
Для начала, если передаю переменную не через 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, как только сбросил полный код формы…



Отредактировано (Июнь 1, 2010 15:53:54)

Офлайн

#6 Июнь 1, 2010 16:01:44

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Не передается post из формы

clean должен возвращать словарь резельтатов



Офлайн

#7 Июнь 1, 2010 16:22:17

dissdoc
От:
Зарегистрирован: 2009-12-12
Сообщения: 273
Репутация: +  0  -
Профиль   Отправить e-mail  

Не передается post из формы

Да, все поправилось. Спасибо Вам. В следующий раз буду внимательнее читать мануалы.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version