0
我是相对较新的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" />
尽管接受,我不明白这是如何回答问题的书面。这个问题关于如何在Django中验证和保存表单数据。在客户端的jQuery验证将是一个很好的补充,但这不是问题的关键。 – 2012-02-28 15:41:06
@ PaulD.Waite如果这最终帮助了她 - 她可能不需要更多。这比0的答案好,如果你有更正确的答案,我会很高兴,如果你写。 – ParPar 2012-03-05 08:48:03
非常真实,非常真实。 – 2012-03-05 12:14:01