我正在尝试进入我的数据库,查看之前是否已提交过某个提交,以及是否已阻止它再次提交。目前我有这段代码测试表单的每个字段(显然每个字段都会更改,但我认为为了简单起见我只显示一个字段)
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。但它似乎只是忽略了它们并提交了它们。
我想我可以删除与他们在提交时输入的内容匹配的所有以前的对象,但这会降低安全性,并可能导致用户一遍又一遍地提交,以为他们在那里得到了更多。我宁愿在它发生之前停止它。