0

我正在使用带有 MYSQL 后端的 Django,我注意到在我更新数据库中的数据和新数据可用之间存在延迟。这是我的代码中发生的事情:

def change_user_email_api(request):
logger.debug("API: resend verification email")
new_email = request.GET.get('email', '')
username = request.user.username
the_user = User.objects.get(username=username)
the_user.email = new_email
the_user.save()
send_verification_email(request.user)
return generate_success(callback)   

send_verification_email 向用户发送一封电子邮件以验证他们的电子邮件帐户。我认为错误是由于我将 request.user 而不是 the_user 传递给 send_verification_email。

有什么方法可以确保我始终拥有数据库中的最新数据,如果是这样,我是否应该这样做?还是我应该接受数据需要一些时间来更新和设计?

谢谢!

4

1 回答 1

2

request.user 不会从数据库中获取用户对象。它是在请求范围内设置对象的中间件。因此,当您使用 request.user 时,您不能指望为您提供用户的更新实例。如果要发送电子邮件,则必须使用“the_user”对象

def change_user_email_api(request):
   logger.debug("API: resend verification email")
   new_email = request.GET.get('email', '')
   the_user = request.user
   the_user.email = new_email
   the_user.save()
   send_verification_email(the_user)
   return generate_success(callback)   
于 2012-11-26T23:33:12.743 回答