Django中无法在邮件正文中获取UUID值的问题
邮箱验证链接异常问题解决
问题表现:通过mailtrap.io收到的验证邮件中,链接显示为:
http://127.0.0.1:8000/verify/<function uuid4 at 0x103f32040>/
问题原因
代码里错误地把uuid.uuid4函数对象直接转成了字符串,而非调用该函数生成UUID值。uuid.uuid4是函数本身,不加括号时,它的字符串表示就是类似<function uuid4 at 0x103f32040>的内容。
修正后的代码
class customer_register(CreateView): model = User form_class = CustomerSignUpForm template_name = 'authentication/customer_register.html' def form_valid(self, form): user = form.save() # 调用uuid.uuid4()生成UUID,再转成字符串 user.token = str(uuid.uuid4()) subject = 'Verify your account | Zane' message = f"http://127.0.0.1:8000/verify/{user.token}/" send_mail( subject, message, 'from@example.com', ['to@example.com'], fail_silently=False, ) # 保存修改后的token到数据库 user.save() return super().form_valid(form)
关键修正点
- 将
str(uuid.uuid4)改为str(uuid.uuid4()):加括号调用函数,生成实际的随机UUID字符串 - 补充
user.save():表单save()后修改了user的token字段,必须调用save()才能把改动同步到数据库
内容的提问来源于stack exchange,提问作者kurac
相关产品推荐
相关产品推荐

