Django 1.3 を使用して Web アプリケーションを開発しており、次のようなハンドラーがあります。
@transaction.commit_manually
@login_required(redirect_field_name='')
def problematic_handler(request):
try:
my_record = models.MyRecords.objects.get(...)
# lots of database operations based on my_record
my_record.delete()
transaction.commit()
return ...
except:
transaction.rollback()
return ...
私の問題は、最初の呼び出しが返される前にユーザーが problem_handler() を複数回呼び出すことができ、必要以上のデータベース レコードが生成されることです。
残念ながら、ここでは PRG パターンは役に立ちません : /
最初の呼び出しが返されるのを待っている間に、ユーザーがハンドラーを 2 回呼び出すことを制限する方法はありますか? または、ハンドラーの 2 回目の呼び出し中に例外を生成することは可能ですか? (最初のものがまだ終わっていないと仮定したソースの)