Найти - Пользователи
Полная версия: Django registration UnicodeDecodeError
Начало » Django » Django registration UnicodeDecodeError
1
Melynx
Прикрутила django registration, в итоге UnicodeDecodeError at /accounts/register/
Тему с похожей проблемой нашла, но ответов там не было.
registration_form.html:
{% extends "base.html" %}
{% block content %}
<h1>Регистрация</h1>
<form method="post" action=""> 
{% csrf_token %}
<dl class="register">
{% for field in form %}
    <dt>{{ field.label_tag }}</dt>
    <dd class="clearfix">{{ field }}
    {% if field.help_text %}<div class="clearfix">{{ field.help_text }}</div>{% endif %}
    {% if field.errors %}<div class="myerrors clearfix">{{ field.errors }}</div>{% endif %}
    </dd>
{% endfor %}
</dl>
<input type="submit" value="Зарегистрироваться" / class="clearfix">
</form>
{% endblock %}
ну и собственно ничего кроме settings.py не меняла.. просто новый проект с регистрацией, после заполнения полей и нажатия кнопки зарегиться, выдает следующее:
UnicodeDecodeError at /accounts/register/

'utf8' codec can't decode byte 0xc0 in position 0: invalid start byte

Request Method: POST
Request URL: http://127.0.0.1:8000/accounts/register/
Django Version: 1.4
Exception Type: UnicodeDecodeError
Exception Value:

'utf8' codec can't decode byte 0xc0 in position 0: invalid start byte

Exception Location: W:\Python27\lib\encodings\utf_8.py in decode, line 16
Python Executable: W:\Python27\python.exe
Python Version: 2.7.3
Python Path:

['W:\\proj\\mysite1',
‘C:\\Windows\\system32\\python27.zip’,
‘W:\\Python27\\DLLs’,
‘W:\\Python27\\lib’,
‘W:\\Python27\\lib\\plat-win’,
‘W:\\Python27\\lib\\lib-tk’,
‘W:\\Python27’,
‘W:\\Python27\\lib\\site-packages’]

В чем тут может быть ошибка?
JOHN_16
Ошибка в кодировках, на каком то этапе попытка переветси строку в объект Unicode провалилась.
Вы не привели полный лог ошибки - поэтому тут только гадать на гуще где именно все свалилось. Либо выкладывайте весь лог чтобы увидеть в каком месте кода произошла ошибка либо сами отлавливайте ее через дебагер, например модуль pdb
Melynx
Environment:
Request Method: POST
Request URL: http://127.0.0.1:8000/accounts/register/
Django Version: 1.4
Python Version: 2.7.3
Installed Applications:
('django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.admin',
 'registration')
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 "W:\Python27\lib\site-packages\django\core\handlers\base.py" in get_response
  111.                         response = callback(request, *callback_args, **callback_kwargs)
File "W:\Python27\lib\site-packages\registration\views.py" in register
  187.             new_user = backend.register(request, **form.cleaned_data)
File "W:\Python27\lib\site-packages\registration\backends\default\__init__.py" in register
  79.                                                                     password, site)
File "W:\Python27\lib\site-packages\django\db\transaction.py" in inner
  209.                 return func(*args, **kwargs)
File "W:\Python27\lib\site-packages\registration\models.py" in create_inactive_user
  85.             registration_profile.send_activation_email(site)
File "W:\Python27\lib\site-packages\registration\models.py" in send_activation_email
  257.                                    ctx_dict)
File "W:\Python27\lib\site-packages\django\template\loader.py" in render_to_string
  169.         t = get_template(template_name)
File "W:\Python27\lib\site-packages\django\template\loader.py" in get_template
  145.     template, origin = find_template(template_name)
File "W:\Python27\lib\site-packages\django\template\loader.py" in find_template
  134.             source, display_name = loader(name, dirs)
File "W:\Python27\lib\site-packages\django\template\loader.py" in __call__
  42.         return self.load_template(template_name, template_dirs)
File "W:\Python27\lib\site-packages\django\template\loader.py" in load_template
  45.         source, display_name = self.load_template_source(template_name, template_dirs)
File "W:\Python27\lib\site-packages\django\template\loaders\filesystem.py" in load_template_source
  39.                     return (file.read().decode(settings.FILE_CHARSET), filepath)
File "W:\Python27\lib\encodings\utf_8.py" in decode
  16.     return codecs.utf_8_decode(input, errors, True)
Exception Type: UnicodeDecodeError at /accounts/register/
Exception Value: 'utf8' codec can't decode byte 0xc0 in position 0: invalid start byte
Imposeren
кодировка файла с темплейтом не utf-8 — или пересохраните в utf-8 или задайте кодировку в settings

Какая вам нужна я подсказать не могу
Melynx
Imposeren спасибо! Задала кодировку в настройках, предыдущая ошибка исчезла, появилась такая же, но уже где-то в другом месте) Возможно ошибка возникла из-за отправки е-mail с подтверждением регистрации? Использовала
python -m smtpd -n -c DebuggingServer localhost:1025
как в инструкции. Может есть другие варианты с тестовым почтовым сервером?
Environment:
Request Method: POST
Request URL: http://127.0.0.1:8004/accounts/register/
Django Version: 1.4
Python Version: 2.7.3
Installed Applications:
('django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.admin',
 'registration')
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 "W:\Python27\lib\site-packages\django\core\handlers\base.py" in get_response
  111.                         response = callback(request, *callback_args, **callback_kwargs)
File "W:\Python27\lib\site-packages\registration\views.py" in register
  187.             new_user = backend.register(request, **form.cleaned_data)
File "W:\Python27\lib\site-packages\registration\backends\default\__init__.py" in register
  79.                                                                     password, site)
File "W:\Python27\lib\site-packages\django\db\transaction.py" in inner
  209.                 return func(*args, **kwargs)
File "W:\Python27\lib\site-packages\registration\models.py" in create_inactive_user
  85.             registration_profile.send_activation_email(site)
File "W:\Python27\lib\site-packages\registration\models.py" in send_activation_email
  264.         self.user.email_user(subject, message, settings.DEFAULT_FROM_EMAIL)
File "W:\Python27\lib\site-packages\django\contrib\auth\models.py" in email_user
  374.         send_mail(subject, message, from_email, [self.email])
File "W:\Python27\lib\site-packages\django\core\mail\__init__.py" in send_mail
  61.                         connection=connection).send()
File "W:\Python27\lib\site-packages\django\core\mail\message.py" in send
  248.         return self.get_connection(fail_silently).send_messages([self])
File "W:\Python27\lib\site-packages\django\core\mail\backends\smtp.py" in send_messages
  92.                 sent = self._send(message)
File "W:\Python27\lib\site-packages\django\core\mail\backends\smtp.py" in _send
  110.                     email_message.message().as_string())
File "W:\Python27\lib\site-packages\django\core\mail\message.py" in message
  228.             msg['Message-ID'] = make_msgid()
File "W:\Python27\lib\site-packages\django\core\mail\message.py" in __setitem__
  124.         name, val = forbid_multi_line_headers(name, val, self.encoding)
File "W:\Python27\lib\site-packages\django\core\mail\message.py" in forbid_multi_line_headers
  82.     val = force_unicode(val)
File "W:\Python27\lib\site-packages\django\utils\encoding.py" in force_unicode
  93.             raise DjangoUnicodeDecodeError(s, *e.args)
Exception Type: DjangoUnicodeDecodeError at /accounts/register/
Exception Value: 'utf8' codec can't decode byte 0xc2 in position 26: invalid continuation byte. You passed in '<20120522205854.4312.1036@\xc2\xe5\xf0\xf2\xee\xeb\xe5\xf2>' (<type 'str'>)
JOHN_16
Не хотите проблем с кодировками - не надо разводить их зоопарк. Работайте в одной настолкьо насколько это возможно. По этому поводу прекрасно знать философию, до которой дошли программисты Python, а затем и его разработчики( что вылилось в Python3):
Все внутри Python программы должно быть в объектах Unicode.
Поэтому перекодируйте ваши python модули, шаблоны и тп в utf-8 и везде указывайте эту кодировку.
Melynx
К сожалению у меня и возможности-то не было зоопарк развести,я же говорила-новый проект, единственное что там моего-это шаблоны(их я уже перепроверила и перекодировала не один раз), ну и в settings.py добавила:
INSTALLED_APPS = (

'registration',
)

ACCOUNT_ACTIVATION_DAYS = 2

AUTH_USER_EMAIL_UNIQUE = True
EMAIL_HOST = ‘localhost’
EMAIL_PORT = 1025
EMAIL_HOST_USER = ‘'
EMAIL_HOST_PASSWORD = ’'
EMAIL_USE_TLS = False
DEFAULT_FROM_EMAIL = ‘info@google.ru

FILE_CHARSET='utf-8'

DEFAULT_CHARSET='utf-8'
ко всему что было в проекте добавила # -*- coding: utf-8 -*- .Даже в модуль registration уже залезла,и там все перекодировала..бестолку, все та же ошибка
При отправке е-mail тоже везде юникод:
username 	u'111li'
password1 	u'11111'
csrfmiddlewaretoken 	u'195b8038cdfdf13e36e770166c764236'
email 	u'info@google.ru'
password2 	u'11111'
Environment:
Request Method: POST
Request URL: http://127.0.0.1:8000/accounts/register/
Django Version: 1.4
Python Version: 2.7.3
Installed Applications:
('django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.admin',
 'registration')
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 "W:\Python27\lib\site-packages\django\core\handlers\base.py" in get_response
  111.                         response = callback(request, *callback_args, **callback_kwargs)
File "W:\Python27\lib\site-packages\registration\views.py" in register
  187.             new_user = backend.register(request, **form.cleaned_data)
File "W:\Python27\lib\site-packages\registration\backends\default\__init__.py" in register
  79.                                                                     password, site)
File "W:\Python27\lib\site-packages\django\db\transaction.py" in inner
  209.                 return func(*args, **kwargs)
File "W:\Python27\lib\site-packages\registration\models.py" in create_inactive_user
  85.             registration_profile.send_activation_email(site)
File "W:\Python27\lib\site-packages\registration\models.py" in send_activation_email
  264.         self.user.email_user(subject, message, settings.DEFAULT_FROM_EMAIL)
File "W:\Python27\lib\site-packages\django\contrib\auth\models.py" in email_user
  374.         send_mail(subject, message, from_email, [self.email])
File "W:\Python27\lib\site-packages\django\core\mail\__init__.py" in send_mail
  61.                         connection=connection).send()
File "W:\Python27\lib\site-packages\django\core\mail\message.py" in send
  248.         return self.get_connection(fail_silently).send_messages([self])
File "W:\Python27\lib\site-packages\django\core\mail\backends\smtp.py" in send_messages
  92.                 sent = self._send(message)
File "W:\Python27\lib\site-packages\django\core\mail\backends\smtp.py" in _send
  110.                     email_message.message().as_string())
File "W:\Python27\lib\site-packages\django\core\mail\message.py" in message
  228.             msg['Message-ID'] = make_msgid()
File "W:\Python27\lib\site-packages\django\core\mail\message.py" in __setitem__
  124.         name, val = forbid_multi_line_headers(name, val, self.encoding)
File "W:\Python27\lib\site-packages\django\core\mail\message.py" in forbid_multi_line_headers
  82.     val = force_unicode(val)
File "W:\Python27\lib\site-packages\django\utils\encoding.py" in force_unicode
  93.             raise DjangoUnicodeDecodeError(s, *e.args)
Exception Type: DjangoUnicodeDecodeError at /accounts/register/
Exception Value: 'utf8' codec can't decode byte 0xc2 in position 27: invalid continuation byte. You passed in '<20120523124528.4576.20047@\xc2\xe5\xf0\xf2\xee\xeb\xe5\xf2>' (<type 'str'>)

Отключила подтверждение регистрации по e-mail,все заработало. Думаю проблема именно в тестовом сервере:
python -m smtpd -n -c DebuggingServer localhost:1025
На хабре писали что
В почтовом дебаггере высветится текст письма в quoted-printable кодировке
. Может кто подсказать как по другому настроить почтовый сервер? Или где прочитать про это? Я в django начинающая, так что не очень понимаю что тут требуется…
Imposeren
Можете попробовать заморочиться еще одним “знанием новых вещей” и выложить ПОЛНЫЙ код вашего проекта на гитхабе или на битбакете — я его стяну, посмотрю и может быть разберусь.

Кстати, что при регистрации-то указываете? Такое ощущуние, что ему почтовый адрес не нравится.
Melynx
test@example.com и т.д.
Изменила настройки на:
AUTH_USER_EMAIL_UNIQUE = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 465
EMAIL_HOST_USER = 'my_mail@gmail.com'
EMAIL_HOST_PASSWORD = 'password'
EMAIL_USE_TLS = False
DEFAULT_FROM_EMAIL = 'my_mail@gmail.com'
Просто зависает-идет соединение и все
Ловите весь проект в архиве, так и не разобралась как сюда код заливать, несмотря на усиленное курение мануала…
https://bitbucket.org/Melynx/bb101repo/downloads/1.zip
Imposeren
финт не прошел;) Думал сходу возьмётесь понять системы контроля версий.

Доступа к файлу нет. Может быть справитесь мне доступ там дать? Отправил там сообщение вам. Ну или если не получиться справиться, то давайте другими методами файл.
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