我正试图建立一个登录系统,用户注册后,需要点击一个链接,一个激活电子邮件。我在方法中创建令牌:
def get_context_data(
self, request, user, context=None):
if context is None:
context = dict()
current_site = get_current_site(request)
if request.is_secure():
protocol = 'https'
else:
protocol = 'http'
token = token_generator.make_token(user)
uid = urlsafe_base64_encode(
force_bytes(user.pk))
context.update({
'domain': current_site.domain,
'protocol': protocol,
'site_name': current_site.name,
'token': token,
'uid': uid,
'user': user,
})
return context这里的问题是生成的令牌如下所示:
http://127.0.0.1:8000/user/activate/b'NjA'/4t8-9fad2c2dc78ecf8a1228/这个网址不起作用,因为urlsafe_base64_encode(force_bytes(user.ok))会产生一些在url中不起作用的毛茸茸的字符组合。我得到以下错误。
未找到页面(404)请求方法:获取请求URL:http://127.0.0.1:8000/user/activate/b&
如您所见,url在#&之后被切断。如何以一种在url中工作的方式对user.pk进行编码?
发布于 2018-01-28 16:28:21
如果有人有同样的问题。问题是对python2.0的更新
这修复了它:decode(uidb64)
https://stackoverflow.com/questions/48488079
复制相似问题