後でユーザー提供の変数を使用するための良い方法を見つけようとしています。私はそれをこの最小限の例に分解しました:
models.py
class Input(models.Model):
x = models.IntegerField()
class InputForm(ModelForm):
class Meta:
model = Input
views.py
def input(request):
if request.method == 'POST':
form = InputForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect('/results')
else:
form = InputForm()
return render_to_response('input.html',
{'form':form}, context_instance=RequestContext(request))
def result(request):
# Here I would like to get the input from the form, e.g.
#
# x = request.GET["x"]
#
# or
#
# inp = InputForm(request.GET)
# x = inp.x
#
# Something like this, so that I can be able to write the line below:
return HttpResponse("x = %f" % x)
これを行うための推奨される方法は何ですか?
編集:
主な問題は、結果関数でrequest.GETdictが空になっていることです。
def results(request):
return HttpResponse(request.GET)
空のページのみを表示します。そしてもちろん、request.GET ['x']は、例外「Key'x' not found in QueryDict:{}」を提供します。私のinput.htmlは次のようになります:
<form method="post" action="">{% csrf_token %}
{{ form }}
<input type="submit" value="Compute" />
</form>
理想的には、FallenAngelの元の回答のように、request.GETをInputFormに返送できるようにしたいのですが、request.GETが空であるため、機能しません。