見出し画像

Djangoのget処理とpost処理について

Djangoでは、ウェブアプリケーションの開発において、主に「GET」メソッドと「POST」メソッドが使われます。これらはHTTPリクエストの種類を指し、ウェブページとやり取りするデータの受け渡しに影響します。

「GET」メソッドは、ページを開いた瞬間に実行されます。このメソッドは主にデータの取得に使用され、クエリパラメータを通じてURL上にデータを載せてサーバーに送信します。サーバーはそのパラメータを解釈して、適切なレスポンスを返します。

例:notes/以下のid情報やページの詳細が送信される。
https://note.com/notes/id=1/page1/hogehoge

一方で、「POST」メソッドは、フォームに入力したりボタンを押したりするなどのユーザーの操作があった際に実行されます。このメソッドでは、リクエストボディにデータを格納してサーバーに送信され、データは秘匿されます。これにより、クレデンシャルやフォームへの入力など、センシティブな情報を安全にサーバーに送信できます。

例:情報をURLではなくリクエストボディに詰めて、送信される。
名前:hoge
住所:ほげ1町名
年齢:40歳


Djangoでは、これらのメソッドの処理を簡単に行うために、`TemplateView`クラスが提供されています。以下は、`TemplateView`を使用した例です。


Djangoでは、すでにメソッドの形がそれぞれ揃っており、postの作法みたいなものがあります。代表的なTemplateViewを使い説明していきます。

TemplateViewはclass名です。url.py はas_view()メソッドを使います。
Classの名前をurlの呼び出し名で使えます。name="index")としてindex.htmlを逆引き名として、urlが読み込まれたら、views.pyのIndexViewの処理が真っ先に行われます。

urls.py

ffrom django.urls import path
from . import views

urlpatterns = [
       path('', views.IndexView.as_view(), name='index'),
]


views.py

from django.views.generic import TemplateView
from django.shortcuts import render

class (TemplateView):
   template_name = "index.html"


    def get(self,request):
        self.kwargs["message"] = "読み込んだらこれがGETです"
        return render(request,'polls/index.html',self.kwargs)


    def post(self, request):
        
        self.kwargs["message"] = "ボタンを押したらこれがPOSTです"
        return render(request, self.template_name, context=self.kwargs)


index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Document</title>
</head>
<body>
    <form action="" method="post">
        {% csrf_token %}
        <div>
          <label for="message">内容</label>
          <textarea id="message" name="message">{{ message }}</textarea>
        </div>
        <input type="submit" value="送信する">
      </form>
</body>
</html>


ページを読み込みGET処理をしたところ


「送信する」ボタンを押してPOST処理をしたところ


まとめ
・GETはページを読み込んだ時に処理されるもの。
・POSTはボタンやフォームに入力したときに処理されるもの。
・どちらもHTTPリクエストで取得される。


宣伝
FDGコンサルティングのyasutoと申します。

Djangoのに関わる開発を承ってます!
したいことを形にいたします。ぜひのぞいてみてください。

https://fdg-consulting.com/


ご覧いただきありがとうございました。 サポートしていただいたお金は開発費にかけさせていただきます。