Top / Programming / Python / Django TIPS / フォームに入力された値を取得する

フォームに入力された値を取得する

フォームに入力された値を取得するには、django.http.HttpRequestオブジェクトのGET属性やPOST属性を使用します。

HttpRequest.GETにはHTTP GETパラメータが、HttpRequest.POSTにはHTTP POSTパラメータが入ります。

HttpRequest.GETとHttpRequest.POSTはdjango.http.QueryDictオブジェクトです。
辞書によく似ていますが、カスタマイズされている機能があります。

たとえば、次のフォームから入力を受け付けるとします。

<form action="/create" method="post">
  <input id="id" name="id" value="235" type="hidden" />
  <input name="comment" value="編集" type="submit" />
</form>

このとき、HttpRequest.POSTは次の値を返します。

request.POST['id'] #=> u'235'
request.POST['comment'] #=> u'編集'

QueryDict.getlist(key)を使うと、同じキーに対して複数の値を取得できます。

<form action="/create" method="post">
  <input id="id" name="id" value="1" type="hidden" />
  <input id="id" name="id" value="2" type="hidden" />
  <input id="id" name="id" value="3" type="hidden" />
  <input name="comment" value="編集" type="submit" />
</form>

このとき次の値を取得できます。

request.POST['id'] #=> u'3' #最後の値を返す
request.POST.getlist('id') #=> [u'1', u'2', u'3']

QueryDict.lists()はすべての値をリストで返します。

上の例では、次の値を返します。

request.POST.lists() #=> [(u'comment', [u'編集']), (u'id', [u'1', u'2', u'3'])]

更新履歴