在Django 2.0和2.1中,您应该
depre()在对base64进行编码后调用uid,以将其转换为字符串:
message = render_to_string('acc_active_email.html', { 'user': user, 'domain': current_site.domain, 'uid': urlsafe_base64_enpre(force_bytes(user.pk)).depre(), 'token': account_activation_token.make_token(user),})有关更多信息,请参见Django
2.0发行说明中的说明。
在Django 2.2+中,
urlsafe_base64_enpre
返回一个string,因此无需解码。
message = render_to_string('acc_active_email.html', { 'user': user, 'domain': current_site.domain, 'uid': urlsafe_base64_enpre(force_bytes(user.pk)), 'token': account_activation_token.make_token(user),})使用可以编写与Django <1.11、2.0-2.1和2.2+兼容的代码
force_text。请注意,以下内容未经测试。
from django.utils.encoding import force_textmessage = render_to_string('acc_active_email.html', { 'user': user, 'domain': current_site.domain, 'uid': force_text(urlsafe_base64_enpre(force_bytes(user.pk))), 'token': account_activation_token.make_token(user),})force_text删除对Django <2.2的支持后,您可以删除和使用第二个代码段。



