データベースの内部にアクセスして、特定の提出が以前に提出されたかどうか、およびそれが再度提出されないようにしているかどうかを確認しようとしています。現在、フォームの各フィールドをテストするこのコードがあります(明らかにフィールドごとに変更されますが、簡単にするために1つのフィールドのみを表示すると思いました)
if request.method == 'POST':
Cashtexts.objects.filter(cashTexts=request.POST['cashTexts']).exists() == False:
次に、存在しない場合は続行し、提出物をデータベースに保存します。true が返された場合は、ユーザーが入力した内容が既に入力されていることをユーザーに通知する else ステートメントに進みます。以前はこのタイプのものが機能していましたが、いくつかの変数名を変更したところ、機能しなくなりました。私は何度かコードを閲覧してきたので、このタイプのフィルターには根本的に何か問題があるのではないかと考えましたが、それは私の頭では理にかなっています。
def submit_win(request):
if request.method == 'POST':
if Cashtexts.objects.filter(cashTexts=request.POST['cashTexts']).exists() or Cashtexts.objects.filter(superPoints=request.POST['superPoints']).exists() or Cashtexts.objects.filter(varolo= request.POST['varolo']).exists() or Cashtexts.objects.filter(swagbucks = request.POST['swagbucks']).exists() or Cashtexts.objects.filter(neobux = request.POST['neobux']).exists() or Cashtexts.objects.filter(topline=request.POST['topline']).exists() or Cashtexts.objects.filter(Paidviewpoint=request.POST['Paidviewpoint']).exists() or Cashtexts.objects.filter(cashcrate=request.POST['cashcrate']).exists() == False:
form = CashtextsForm(request.POST)
if form.is_valid():
form.save()
ref_create = Cashtexts.objects.filter(cashTexts=request.POST['cashTexts'])
return render_to_response('submitted_page.html', {'ref_create': ref_create})
else: #Error message reading wither you didnt insert codes or you enter the same code twice
error = 'That code has already been submitted'
ref_create = CashtextsForm()
return render_to_response('submit.html', {'ref_create': ref_create,'error':error}, context_instance=RequestContext(request))
else: #displays the page when the user asks to go to the submit page
ref_create = CashtextsForm()
return render_to_response('submit.html', {'ref_create': ref_create}, context_instance=RequestContext(request))
また、Cashtexts.objects.filter(cashTexts=request.POST['cashTexts']) を変数に変換し、それをテンプレートに渡して、それが何を返しているかを確認し、ステートメント True を伝える必要があるオブジェクトを返しました。しかし、それらを無視してとにかく提出したように見えました。
送信時に入力したものと一致する以前のオブジェクトをすべて削除できると思いますが、それにより安全性が低下し、ユーザーが何度も送信を繰り返して、より多くのものを取得していると考える可能性があります。そうなる前にやめた方がいいと思います。