Django Academy · レッスン

getメソッドとpostメソッドの処理

HTTP動詞をクラスメソッドに振り分けます

レッスン 3/413 ステップ

「getメソッドとpostメソッドの処理」はCoddyKit上の無料Django Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDjango Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Django Academyコースには全4レッスンが含まれています。

動詞がメソッドになる

CBVでは、各HTTP動詞がメソッドに対応します。GETリクエストではgetメソッドが実行され、POSTリクエストではpostメソッドが実行されます。

基底ビューをサブクラス化する

動詞を完全に制御するには、基底のViewクラスをサブクラス化します。その後、サポートしたいメソッドだけを正確に定義できます。

class ContactView(View):
    pass

getメソッドを定義する

ページを表示するためにgetメソッドを追加します。たとえば、空の問い合わせフォームを表示できます。selfとrequestを受け取り、レスポンスを返します。

def get(self, request):
    return render(request, "contact.html")

postメソッドを定義する

送信されたデータを処理するためにpostメソッドを追加します。DjangoがPOSTリクエストを自動的にここへルーティングします。

def post(self, request):
    name = request.POST.get("name")
    return redirect("thanks")

methodのチェックは不要

もうif request.method == "POST"と記述する必要はありません。Djangoが動詞に応じて適切なメソッドへ振り分けます。

dispatchがリクエストを振り分ける

内部では、dispatchというメソッドが動詞を確認し、対応するメソッドを呼び出します。通常、これを直接操作することはほとんどありません。

サポートされていない動詞には405を返す

定義していない動詞でリクエストされた場合、Djangoは自動的に405 Method Not Allowedを返します。デフォルトで安全です。

GETしてからPOSTする基本フロー

一般的なパターンでは、getでフォームを表示し、ユーザーが送信した後、postで処理します。2つのメソッドを1つのクラスにまとめます。

POST後にリダイレクトする

postが成功したら、レンダリングではなくリダイレクトを返します。これにより、更新時の二重送信を防げます。

selfで状態を共有する

両方のメソッドは同じクラスにあるため、共有する値をselfに保存したり、定義したヘルパーメソッドを呼び出したりできます。

as_viewで接続する

通常どおりas_view()を使ってクラスをルーティングします。Djangoが振り分け処理を構築するため、getとpostがそのまま動作します。

path("contact/", ContactView.as_view())

クイックチェック

getだけを定義したCBVにPOSTすると、どうなりますか。

まとめ:getとpost

CBVが動詞をメソッドに対応付ける仕組みを見てきました。getが表示し、postが処理し、dispatchが振り分け、未定義の動詞には405を返します。手動のメソッドチェックは不要です。🚦

無料で開始

AI チューターと学ぶ Python — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
30
レッスン
120

よくある質問

「getメソッドとpostメソッドの処理」レッスンは無料ですか?

はい。「getメソッドとpostメソッドの処理」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Django Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Django Academyコースには全4レッスンが含まれています。

「getメソッドとpostメソッドの処理」で何を学びますか?

HTTP動詞をクラスメソッドに振り分けます ブラウザで直接実行するハンズオンコードでDjango Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Django Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのDjango Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「getメソッドとpostメソッドの処理」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このDjango Academyレッスンでコードを書いて実行できますか?

はい。すべてのDjango Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 関数ビューからビュークラスへ
  2. TemplateViewとget_context_data
  3. getメソッドとpostメソッドの処理
  4. Mixinsとas_view()
← Django Academyに戻る