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 は、電子メール アカウントを確認するためにユーザーに電子メールを送信します。エラーは、the_user の代わりに request.user を send_verification_email に渡したことが原因だと考えています。

データベースから常に最新のデータを取得できるようにする方法はありますか?もしそうなら、とにかくこれを行うべきですか? それとも、データの更新と設計に時間がかかることを受け入れる必要がありますか?

ありがとう!

4

1 に答える 1

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)   
于 2012-11-26T23:33:12.743 に答える