getメソッドとpostメソッドの処理
HTTP動詞をクラスメソッドに振り分けます
「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):
passgetメソッドを定義する
ページを表示するために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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 関数ビューからビュークラスへ
- TemplateViewとget_context_data
- getメソッドとpostメソッドの処理
- Mixinsとas_view()