Уведомления

Группа в Telegram: @pythonsu

#1 Май 21, 2012 20:03:09

Melynx
Зарегистрирован: 2012-05-21
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Django registration UnicodeDecodeError

Прикрутила 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’]

В чем тут может быть ошибка?

Офлайн

#2 Май 22, 2012 04:59:52

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Django registration UnicodeDecodeError

Ошибка в кодировках, на каком то этапе попытка переветси строку в объект Unicode провалилась.
Вы не привели полный лог ошибки - поэтому тут только гадать на гуще где именно все свалилось. Либо выкладывайте весь лог чтобы увидеть в каком месте кода произошла ошибка либо сами отлавливайте ее через дебагер, например модуль pdb



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Май 22, 2012 14:47:15

Melynx
Зарегистрирован: 2012-05-21
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Django registration UnicodeDecodeError

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

Офлайн

#4 Май 22, 2012 20:15:03

Imposeren
От:
Зарегистрирован: 2009-04-06
Сообщения: 46
Репутация: +  1  -
Профиль   Отправить e-mail  

Django registration UnicodeDecodeError

кодировка файла с темплейтом не utf-8 — или пересохраните в utf-8 или задайте кодировку в settings

Какая вам нужна я подсказать не могу



Отредактировано Imposeren (Май 22, 2012 20:16:02)

Офлайн

#5 Май 22, 2012 23:03:56

Melynx
Зарегистрирован: 2012-05-21
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Django registration UnicodeDecodeError

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'>)

Отредактировано Melynx (Май 22, 2012 23:04:18)

Офлайн

#6 Май 23, 2012 04:46:27

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Django registration UnicodeDecodeError

Не хотите проблем с кодировками - не надо разводить их зоопарк. Работайте в одной настолкьо насколько это возможно. По этому поводу прекрасно знать философию, до которой дошли программисты Python, а затем и его разработчики( что вылилось в Python3):
Все внутри Python программы должно быть в объектах Unicode.
Поэтому перекодируйте ваши python модули, шаблоны и тп в utf-8 и везде указывайте эту кодировку.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#7 Май 23, 2012 15:04:46

Melynx
Зарегистрирован: 2012-05-21
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Django registration UnicodeDecodeError

К сожалению у меня и возможности-то не было зоопарк развести,я же говорила-новый проект, единственное что там моего-это шаблоны(их я уже перепроверила и перекодировала не один раз), ну и в 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 начинающая, так что не очень понимаю что тут требуется…

Офлайн

#8 Май 23, 2012 18:04:11

Imposeren
От:
Зарегистрирован: 2009-04-06
Сообщения: 46
Репутация: +  1  -
Профиль   Отправить e-mail  

Django registration UnicodeDecodeError

Можете попробовать заморочиться еще одним “знанием новых вещей” и выложить ПОЛНЫЙ код вашего проекта на гитхабе или на битбакете — я его стяну, посмотрю и может быть разберусь.

Кстати, что при регистрации-то указываете? Такое ощущуние, что ему почтовый адрес не нравится.



Офлайн

#9 Май 23, 2012 19:53:16

Melynx
Зарегистрирован: 2012-05-21
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Django registration UnicodeDecodeError

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

Отредактировано Melynx (Май 23, 2012 20:29:46)

Офлайн

#10 Май 24, 2012 00:53:36

Imposeren
От:
Зарегистрирован: 2009-04-06
Сообщения: 46
Репутация: +  1  -
Профиль   Отправить e-mail  

Django registration UnicodeDecodeError

финт не прошел;) Думал сходу возьмётесь понять системы контроля версий.

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



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version