• Skip to main content
  • Skip to secondary menu
  • Skip to primary sidebar
  • Skip to footer

AI活用エンジニアへの道

生成AI時代のエンジニアの生き方を考えるメディア(作成途中)

  • コラム
  • 生成AI
  • プログラミング
    • Python入門
    • Flask入門
    • Django入門
  • プロフィール
Home / プログラミング / Django / DjangoでGETリクエストで値を送信して、View内で処理して画面上に表示する方法

DjangoでGETリクエストで値を送信して、View内で処理して画面上に表示する方法

1 ?var1=value1&var2=value2で送る方法
2 urlパターンマッチングで値を送る方法(http://○○○/○○/××とする)
3 関連記事

今回は、GETリクエストでViewに値を送る方法について記述する。

HTTPメソッドのGETで値を送る。

方法は主に2つあるのでそれぞれ記述する

  • var1=value1&var2=value2で送る方法
  • urlパターンマッチングで値を送る方法


?var1=value1&var2=value2で送る方法

この場合、viewで以下のようにGETメソッドでリクエストが送られてきた想定でView側のコードを作成する

  • view.pyの記述内容(request.GETから取得)
from django.http import HttpResponse

def index(request):
    msg = ''
    if 'msg' in request.GET: # requst.GET内にmsgが含まれているかどうか確認する。urlに?msg=○○とあるときに、msgに対応した○○の値を取得できる
        msg = request.GET['msg'] # msg=hogeの場合、hogeを取得して変数msgに格納する
    return HttpResponse(f'Your message: {msg}') # Your message: {msg}を画面に表示

  • これで、下のように?msg=hogeとurlを指定してアクセスした場合、画面にYour message: hogeと表示される

  • もしmsgを指定しなかった場合、view内でmsgに値が格納されず画面にはYour message:のみ表示される。

また、GETで渡される値は、型が文字列型(str)になる

例えば以下のような場合、文字列と数値の計算になり、計算ができないためエラーが発生する

  • views.py
from django.http import HttpResponse

def index(request):
     num = ''
     if 'num' in request.GET:
          num = request.GET['num'] # requestからnum=○○の値を取得
          print(type(num)) # str
          sum = num + 1 # str + intとなりエラー
     return HttpResponse(f'{num} + 1 = {sum}')

  • http://127.0.0.1:8000/app1/index/?num=12でアクセスし、TypeErrorとなる例

この場合、以下のように修正する。

  • views.py(修正版)
from django.http import HttpResponse

def index(request):
     num = ''
     if 'num' in request.GET:
          num = request.GET['num']
          print(type(num)) # str
          sum = int(num) + 1 # int + intとなる
     return HttpResponse(f'{num} + 1 = {sum}') # num + 1 = sumと画面に表示される

  • 修正後num=1としてアクセスした結果

 


urlパターンマッチングで値を送る方法(http://○○○/○○/××とする)

これは、urlに?○○=○○と書かずに、/○○/××と記述してGETリクエストで送るやり方を言う。

(URLパターンマッチングについて詳細)

これには、urls.pyとview.pyそれぞれ修正する必要がある。

  • urls.pyでURLパターンマッチングを指定する
from django.urls import path
from app1 import views

app_name = 'app1'

urlpatterns = [
    path('index/<str:msg>/<int:num>', views.index, name='index'),
    # GETで送信するパラメータとしてmsgとnumを指定する。この場合、msgはstrで、numはintで渡される
]

次に、views.pyを修正する

  • views.pyでGETリクエストを取得
from django.http import HttpResponse

def index(request, msg, num): # GETで取得するパラメータとしてmsgとnumを指定
    result = f"{msg} = {num} years old"
    return HttpResponse(result)

これで例えば

http://127.0.0.1:8000/app1/index/Taro/12

とアクセスすると、"Taro = 12 years old"と画面には表示される

  • 実行結果

関連記事

Pythonの型ヒント:コレクション型とOptional型の使い方
Pythonの型ヒント:コレクション型とOptional型の…
Python型ヒントについて、変数と関数の引数と戻り値に付与する基本的な書き方について
Python型ヒントについて、変数と関数の引数と戻り値に付与…
【まとめ】よく使うLinuxのショートカット11選
【まとめ】よく使うLinuxのショートカット11選
覚えておくべきLinuxコマンド50選
覚えておくべきLinuxコマンド50選
FlaskでFormを用いてPOSTリクエストを行い、送信された値を取得する
FlaskでFormを用いてPOSTリクエストを行い、送信さ…
Flaskでabortを用いてHTTPException例外を強制的に発生させる
Flaskでabortを用いてHTTPException例外…

Primary Sidebar

人気記事

  • 1
    ITエンジニアとしてスキルを高めるためのUdemy講…
  • 2
    PyCharm,IntelliJのおすすめプラグイン一覧
  • no image 3
    Python未経験だが、フリーランスの案件に採用さ…
  • 4
    アメリカのシリコンバレーでプログラミングを無…

特集記事

  • 1
    Cursorの使用のポイントとコツ(コード補完、イ…
  • 2
    ITエンジニアとしてスキルを高めるためのUdemy講…

目次

1 ?var1=value1&var2=value2で送る方法
2 urlパターンマッチングで値を送る方法(http://○○○/○○/××とする)
3 関連記事
StartCode ロゴ
AI時代のエンジニアを最速で育てる
法人向けIT研修で即戦力を育成しています。詳しくはお問い合わせください。
▶ 詳細はこちら
Django講座
【Udemy】Django入門講座(0からDjangoを学習: Python講座つき)
受講生6500人ほどの人気講座。<strong>View, Template, Model, Cla...
詳細 ▶

Footer

利用規約