Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 8, 2010 14:37:50

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

Не могу найти причину ошибки

Ребята, бьюсь уже 4-ый час. Не пойму в какую сторону искать ошибку. Поискал в гугле. Все равно не понятно. Ошибка такая:
В момент отправки данных формы в базу получаю

AttributeError at /person/register/
'unicode' object has no attribute 'get'
Request Method: POST
Request URL: http://localhost:8090/person/register/
Django Version: 1.2.3
Exception Type: AttributeError
Exception Value:
'unicode' object has no attribute 'get'
Exception Location: C:\Python26\lib\site-packages\django\forms\models.py in _get_validation_exclusions, line 310
Python Executable: C:\Python26\python.exe
Python Version: 2.6.6
Модель самая простая
class Person(models.Model):
login = models.CharField
passwd = models.CharField
Форма тоже элементарная
class RegForm(forms.ModelForm):
class Meta:
model = Person



Офлайн

#2 Окт. 8, 2010 14:52:37

vaxXxa
От: Kyiv, Ukraine
Зарегистрирован: 2009-06-16
Сообщения: 278
Репутация: +  0  -
Профиль   Отправить e-mail  

Не могу найти причину ошибки

class Person(models.Model):
login = models.CharField(max_length=100)
passwd = models.CharField(max_length=100)
а так?

И форму как отправляешь? Покажи код хтмл..



Офлайн

#3 Окт. 8, 2010 14:56:47

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

Не могу найти причину ошибки

vaxXxa, ахахаха, очень смешно )))))
Я просто сократил код, чтобы передать идею. ) Форму отдаю вот так

def register(request):
if request.method == 'POST':
persf = RegistrationForm(request.POST)
if persf.is_valid():
person = persf.save()
return HttpResponseRedirect(reverse('main'))
else:
persf = RegistrationForm()
return direct_to_template(request, 'person/register.html', {'form': persf})
Но я пробовал несколькими способами. Одна и та же ошибка..



Офлайн

#4 Окт. 8, 2010 14:59:01

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

Не могу найти причину ошибки

Весь трейсбек покажите.



Офлайн

#5 Окт. 8, 2010 15:02:37

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

Не могу найти причину ошибки

Environment:

Request Method: POST
Request URL: http://localhost:8090/person/register/
Django Version: 1.2.3
Python Version: 2.6.6
Installed Applications:
['django.contrib.auth',
'django.contrib.admin',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'src.person',
'src.widgets']
Installed Middleware:
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware')


Traceback:
File "C:\Python26\lib\site-packages\django\core\handlers\base.py" in get_response
100. response = callback(request, *callback_args, **callback_kwargs)
File "E:\PythonProjects\Bugcatcher\src\..\src\person\views.py" in register
11. if persf.is_valid():
File "C:\Python26\lib\site-packages\django\forms\forms.py" in is_valid
121. return self.is_bound and not bool(self.errors)
File "C:\Python26\lib\site-packages\django\forms\forms.py" in _get_errors
112. self.full_clean()
File "C:\Python26\lib\site-packages\django\forms\forms.py" in full_clean
269. self._post_clean()
File "C:\Python26\lib\site-packages\django\forms\models.py" in _post_clean
324. exclude = self._get_validation_exclusions()
File "C:\Python26\lib\site-packages\django\forms\models.py" in _get_validation_exclusions
310. field_value = self.cleaned_data.get(field, None)

Exception Type: AttributeError at /person/register/
Exception Value: 'unicode' object has no attribute 'get'



Офлайн

#6 Окт. 8, 2010 16:31:11

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

Не могу найти причину ошибки

А clean у формы есть?



Офлайн

#7 Окт. 8, 2010 16:41:54

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

Не могу найти причину ошибки

Да, конечно. Вот полная форма

class RegistrationForm(forms.ModelForm):
passwd = forms.CharField(max_length=64, widget=forms.PasswordInput, required=True)
passwd2 = forms.CharField(max_length=64, widget=forms.PasswordInput, required=True)

def clean_login(self):
login = self.cleaned_data['login']

try:
person = Person.objects.get(login=login)
except Person.DoesNotExist:
person = None
if person:
raise forms.ValidationError("Такой пользователь уже существует")

return login

def clean(self):
pass1 = self.cleaned_data['passwd']
pass2 = self.cleaned_data['passwd2']

if (pass1 != pass2):
raise forms.ValidationError("Пароли должны совпадать")

return pass1

class Meta:
model = Person



Офлайн

#8 Окт. 8, 2010 16:58:01

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

Не могу найти причину ошибки

dissdoc
Я просто сократил код, чтобы передать идею. )
Но как обычно потеряли суть.
dissdoc
def clean(self):
pass1 = self.cleaned_data['passwd']
pass2 = self.cleaned_data['passwd2']

if (pass1 != pass2):
raise forms.ValidationError("Пароли должны совпадать")

return pass1
Почему у вас clean формы возвращает строку?



Офлайн

#9 Окт. 8, 2010 17:01:04

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

Не могу найти причину ошибки

Больше ничего говорить не надо.
Спасибо за наводку.
Блин! ))))



Отредактировано (Окт. 8, 2010 17:01:19)

Офлайн

#10 Окт. 8, 2010 17:30:40

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

Не могу найти причину ошибки

А Вы не пробовали отладку производить сами, а не через форум?



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version