【发布时间】:2025-12-29 10:55:11
【问题描述】:
我正在尝试构建一个登录系统,用户在注册后需要点击一个链接和一封激活电子邮件。我在一个方法中创建令牌:
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
这里的问题是生成的token是这样的:
http://127.0.0.1:8000/user/activate/b'NjA'/4t8-9fad2c2dc78ecf8a1228/
该 URL 无效,因为 urlsafe_base64_encode(force_bytes(user.ok))
生成一些在 url 中不起作用的奇怪字符组合。我收到以下错误。
找不到页面 (404) 请求方法:GET 请求网址:http://127.0.0.1:8000/user/activate/b&
如您所见,网址在#& 之后被截断。
如何以适用于 url 的方式对 user.pk 进行编码?
【问题讨论】:
标签: django django-rest-framework token