Форум сайта python.su
Ребята, бьюсь уже 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
Офлайн
class Person(models.Model):
login = models.CharField(max_length=100)
passwd = models.CharField(max_length=100)
Офлайн
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})
Офлайн
Весь трейсбек покажите.
Офлайн
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'
Офлайн
А clean у формы есть?
Офлайн
Да, конечно. Вот полная форма
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
Офлайн
dissdocНо как обычно потеряли суть.
Я просто сократил код, чтобы передать идею. )
dissdocПочему у вас clean формы возвращает строку?def clean(self):
pass1 = self.cleaned_data['passwd']
pass2 = self.cleaned_data['passwd2']
if (pass1 != pass2):
raise forms.ValidationError("Пароли должны совпадать")
return pass1
Офлайн
Больше ничего говорить не надо.
Спасибо за наводку.
Блин! ))))
Отредактировано (Окт. 8, 2010 17:01:19)
Офлайн
А Вы не пробовали отладку производить сами, а не через форум?
Офлайн