DjangoでGET/POSTから値を取得する方法をご紹介します。
目次
条件
- Django 2.1.7
- Python 3.7.0
GETから値を取得
以下のいずれかを使用します。
- request.GET.get(‘param’, None)
- request.GET.getlist(‘param’, None)
実装例
views.py
import logging
from django.contrib.auth.mixins import LoginRequiredMixin
from django.views import generic
from .models import Post
logger = logging.getLogger('development')
class IndexView(LoginRequiredMixin, generic.ListView):
template_name = 'sample/index.html'
model = Post
def get(self, request, *args, **kwargs):
if self.request.GET.get('title', None):
logger.debug("request.GET.get() = " + self.request.GET.get('title', None))
if self.request.GET.getlist('title', None):
logger.debug("request.GET.getlist() = " + self.request.GET.getlist('title', None)[0])
return generic.ListView.get(self, request, *args, **kwargs)
index.html
index.htmlの抜粋です。
<h1>フォーム</h1>
<form method="get">
{% csrf_token %}
<input type="textbox" value="1" name="title">
<input type="textbox" value="2" name="title">
<input type="textbox" value="3" name="title">
<input type="submit" id="button" name="button" value="送信">
</form>
実行結果
request.GET.get() = 3 request.GET.getlist() = 1
inputで同一name属性が3つあるため、request.GET.get()では最後の3だけが取得されます。
request.GET.getlist()で取得した場合、番号を指定することで対象の値を取得することが出来ます。
POSTから値を取得
以下のいずれかを使用します。
- request.POST.get(‘param’, None)
- request.POST.getlist(‘param’, None)
実装例
views.py
import logging
from django.contrib.auth.mixins import LoginRequiredMixin
from django.views import generic
from .models import Post
logger = logging.getLogger('development')
class IndexView(LoginRequiredMixin, generic.ListView):
template_name = 'sample/index.html'
model = Post
def post(self, request, *args, **kwargs):
if self.request.POST.get('title', None):
logger.debug("self.request.POST.get() = " + self.request.POST.get('title', None))
if self.request.POST.getlist('title', None):
logger.debug("self.request.POST.getlist() = " + self.request.POST.getlist('title', None)[0])
return self.get(request, *args, **kwargs)
index.html
index.htmlの抜粋です。
<h1>フォーム</h1>
<form method="post">
{% csrf_token %}
<input type="textbox" value="1" name="title">
<input type="textbox" value="2" name="title">
<input type="textbox" value="3" name="title">
<input type="submit" id="button" name="button" value="送信">
</form>
実行結果
request.POST.get() = 3 request.POST.getlist() = 1
inputで同一name属性が3つあるため、request.POST.get()では最後の3だけが取得されます。
request.POST.getlist()で取得した場合、番号を指定することで対象の値を取得することが出来ます。

