我试图通过电子邮件,电子邮件工作,编码工作激活用户,我使用django1.11的方法,该方法成功运行.
在Django 1.11中,以下解码成功到28,其中uidb64 = b'Mjg'
force_text(urlsafe_base64_decode(uidb64))
Run Code Online (Sandbox Code Playgroud)
在django 2(2,0,0,'final',0)中,上述代码解码不起作用并导致错误
django.utils.encoding.DjangoUnicodeDecodeError: 'utf-8' codec can't decode byte 0xc8 in position 1: invalid continuation byte. You passed in b'l\xc8\xe0' (<class 'bytes'>)
Run Code Online (Sandbox Code Playgroud)
我也发布了我的观点以防万一
from django.utils.encoding import force_bytes, force_text
from django.utils.http import urlsafe_base64_encode, urlsafe_base64_decode
def signup(request):
if request.method == 'POST':
form = SignUpForm(request.POST)
if form.is_valid():
user = form.save(commit=False)
user.is_active = False
user.save()
# auth_login(request, user)
message = render_to_string('user_activate_email.html', {
'user': user,
'domain': Site.objects.get_current().domain,
'uidb64': urlsafe_base64_encode(force_bytes(user.pk)),
'token': account_activation_token.make_token(user),
})
mail_subject = 'Activate your blog account.'
to_email = …Run Code Online (Sandbox Code Playgroud)