一个页面上的多个表单
Posted
技术标签:
【中文标题】一个页面上的多个表单【英文标题】:Several forms on a page 【发布时间】:2012-02-06 13:36:07 【问题描述】:我对 Django 比较陌生,并尝试创建一个页面,我在其中提出问题并允许用户给出两个答案。所以我想显示一个问题列表,以及下面两个猜测的字段。我尝试使用表单,但无法保存或验证从这些表单中获取的数据。 下面是我的相关代码。
来自 models.py:
class Subject(models.Model):
subject = models.FloatField(verbose_name='ID')
class SubjectForm(forms.Form):
subject = forms.FloatField()
class General(models.Model):
question = models.CharField(max_length=400)
answer = models.FloatField()
class Guess(models.Model):
general = models.ForeignKey(General)
subject = models.ForeignKey(Subject)
lower = models.FloatField('lower boundary')
upper = models.FloatField('upper boundary')
class GuessForm(forms.Form):
lower = forms.FloatField()
upper = forms.FloatField()
来自views.py:
def questions(request):
if request.method == 'POST': # If answers were submitted
for question in all_questions:
form = GuessForm()
if form.is_valid():
lower = request.POST.get('lower','')
upper = request.POST.get('upper','')
new_guess = Guess(pk = 'question',
subject = subject,
lower = lower,
upper = upper)
new_quess.save()
return HttpResponseRedirect('/general_knowledge/questions/thanks/')
else:
form = GuessForm()
csrfContext = RequestContext(request,'form': form)
return render_to_response('general_knowledge/question_form.html',
'all_questions': all_questions,
context_instance=RequestContext(request))
来自模板
% for question in all_questions %
<form action="" method="post">% csrf_token %
<ol>
<p><LI> question.question .</p>
<label for="lower">Lower boundary:</label><input type="text" name="lower">
form.lower.errors
<label for="upper">Upper boundary: </label><input type="text" name="upper">
form.upper.errors
</ol>
</form>
% endfor %
<input type="submit" value="Submit" />
【问题讨论】:
【参考方案1】:您可以在提交时使用 JQuery 打印验证,如下所示:
$("input[type="submit"]).click(function ()
if ($("#lower").text() == // some condition
$("#validation").show();
else
$("Form").submit();
);
【讨论】:
尽管接受了,但我看不出它是如何回答书面问题的。问题是关于如何在 Django 中验证和保存表单数据。客户端的 jQuery 验证将是一个很好的补充,但这不是问题所在。 @PaulD.Waite 如果这最终帮助了她——她可能不需要更多。比0个答案好,如果你有更正确的答案,我会很高兴你写出来。以上是关于一个页面上的多个表单的主要内容,如果未能解决你的问题,请参考以下文章
django:csrf_token 用于单个页面上的多个表单和 ajax 请求