![見出し画像](https://assets.st-note.com/production/uploads/images/71864444/rectangle_large_type_2_536144d894f4d6298ec84be3e880bf33.png?width=1200)
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>
![](https://assets.st-note.com/img/1644417723757-Rw9gUsu2Xo.png)
![](https://assets.st-note.com/img/1644417764168-J2AzZ2wJUg.png)
まとめ
・GETはページを読み込んだ時に処理されるもの。
・POSTはボタンやフォームに入力したときに処理されるもの。
・どちらもHTTPリクエストで取得される。
宣伝
FDGコンサルティングのyasutoと申します。
Djangoのに関わる開発を承ってます!
したいことを形にいたします。ぜひのぞいてみてください。
ご覧いただきありがとうございました。 サポートしていただいたお金は開発費にかけさせていただきます。