我正在使用带有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。
有什么方法可以确保我始终拥有数据库中的最新数据,如果是这样,我应该这样做吗?或者我应该接受数据需要一些时间来更新和设计?
谢谢!
答案 0 :(得分:2)
request.user不会从数据库中提取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)