Django: сделать струнную байтовую строку обратно в оригинал - PullRequest
0 голосов
/ 12 сентября 2018

Я подаю заявку с новой users моделью и email в качестве логина.У меня есть простое подтверждение с электронной почтой пользователей.

План:

  1. Пользователь вводит свои данные;email конечно.
  2. Далее Он получает некоторый код (сформированный как urlsafe_base64_encode(force_bytes(users_email))).
  3. Этот код планируется вводить вручную или с помощью copy-paste в поле подтверждения.чтобы активировать учетную запись пользователя.

В консоли Python эта цепочка работает хорошо.

Проблема в том, что когда пользователь вводит вручную или копирует и вставляет код из электронной почты, он вызывает

DjangoUnicodeDecodeError: 'utf-8' codec can't decode byte... 
  You passed in b'm\xb5\xa5\xad\xb...

Некоторый анализ показывает, что в пост-функции код поступает в виде строки "b'bla-bla-bla".Но не как строка байтов b'bla-bla-bla', которая хороша для получения исходной строки с force_text(urlsafe_base64_decode(the_code)).

Есть идеи преобразовать строковый объект с b начальным символом в более удобный объект байтовой строки?Или есть другой способ сделать секретное кодирование / декодирование на основе имени пользователя (user-email)?

1 Ответ

0 голосов
/ 12 сентября 2018

PS: Я только что решил - разделить полученную строку и создать новую строку байтов, как force_bytes(the_code.split("'")[1]).Есть ли более деликатный или питонический метод?

...