PythonでWebアプリを開発する際に利用できるdjangoでURLの一部をパラメータとして取得する手順を備忘録的に投稿します。
GETパラメータで取得
最も簡単な方法は、GETパラメータとして受け渡す方法です。URLConf(urls.py)を特に編集しなくても、URLの末尾に “?p=パラメータ” などで受け取ったページ内でURLに追加された内容を受け取ることができます。
具体的には[urls.py]を次のように編集して
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
[vires.py]に次のようなコードを追加します。
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def index(request):
result = 'Hello World.'
if 'p' in request.GET:
result = request.GET['p']
return HttpResponse(result)
実行時にURLを参照した場合には、次のように表示されます。
localhost:8000/api/
実行時にURLを次のように参照した場合には、URLに含まれた文字を取り出すことができます。
localhost:8000/api/?p=1
URLに直接パラメータを埋め込む方法
例えば、サービスのAPIなどを利用する際に次のURLのような呼び出しを見かけます。
https://servicename/api/archive/2021/02
“?p=パラメータ” のようにURLに追加せずにURLの一部を引数のように利用することもできます。
実際には手順は次のように行います。
1. [urls.py]を編集して次のようにします。
urlpatterns = [
path('', views.index, name='index'),
path('<p>', views.getparam1, name='getparam1'),
]
2. [views.py]ファイルに、次のコードを追加します。
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def index(request):
result = 'Hello World.'
if 'p' in request.GET:
result = request.GET['p']
return HttpResponse(result)
def getparam1(request, p):
result = p
return HttpResponse(result)
3. [ターミナル]画面に次のコマンドを入力します。
python manage.py runserver
5. ブラウザで次のURLを表示します。
localhost:8000/api/10
入力した値がページに表示されます。
複数のパラメータをURLに追加する方法
パラメータを複数含めることで階層的にURLを利用することができます。
先ほど編集した[urls.py]を次のように編集します。
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
path('<p>', views.getparam1, name='getparam1'),
path('<p>/<q>', views.getparam2, name='getparam2'),
]
[views.py]に次のコードを追加します。
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def index(request):
result = 'Hello World.'
if 'p' in request.GET:
result = request.GET['p']
return HttpResponse(result)
def getparam1(request, p):
result = p
return HttpResponse(result)
def getparam2(request, p, q):
param1 = p
param2 = q
result = param1 + ':' + param2
return HttpResponse(result)
このように、URL部分を拡張して複数のパラメータを取得できるようになります。
先ほどと同様に次のURLをブラウザで表示します。
localhost:8000/10/20
ページ内でURLに含まれた2つのパラメータを取得することができます。
まとめ
Pythonで利用できる[django]利用してWebアプリケーションを開発する際に[urls.py]を使って、URLの一部をパラメータとして利用することができます。
“?p=” のようなGETパラメータを使って取得することも可能ですが、
/api/username/property
/api/archive/2020
/api/archive/2020
/02
のように階層的に理解ができるURLを作ることができるので、APIとして提供する際に便利な使い方ができます。
スポンサーリンク
最後までご覧いただき、ありがとうございます。