[Django]クエリパラメータを使用する

### クエリパラメータを記述する
クエリパラメータとはアドレスの後につけて記述するパラメータの事
e.g. http://hoge.com/hello/index?xxx=yyyy&zzz=aaa… など

1
2
3
4
5
6
from django.shortcuts import render
from django.http import HttpResponse
 
def index(request):
    msg = request.GET['msg']
    return HttpResponse('you typed : "' + msg +'".')

– request.GET[‘&{param}’]でGETパラメータを取り出す。
– リクエストはHttpRequestクラスを使用し、レスポンスはHttpResponseクラスを使用する

### クエリパラメータがない時
MultiValueDictKeyErrorになるので、views.pyでmsgがない時の処理を追加する

/hello/views.py

1
2
3
4
5
6
7
8
9
10
from django.shortcuts import render
from django.http import HttpResponse
 
def index(request):
    if 'msg' in request.GET:
        msg = request.GET['msg']
        result = 'you typed : "' + msg +'".'
    else:
        result = 'please send msg parameter!'
    return HttpResponse(result)

– GETプロパティに設定されている値はQueryDictというクラスのインスタンス

### クエリパラメーターをスラッシュ(“/”)に変更する
/hello/urls.py

1
2
3
urlpatterns = [
    path('<int:id>/<nickname>', views.index, name='index'),
]

/hello/views.py

1
2
3
4
def index(request, id, nickname):
    result = 'your id: ' + str(id) + ', name: "' \
        + nickname + '".'
    return HttpResponse(result)

– 文末のバックスラッシュ(“\”)は見かけの改行