web-dev-qa-db-ja.com

Djangoでrequest.method == "POST"はどういう意味ですか?

私は自分の意見でこのことを非常に多く使っていますが、それが何を意味するのかを正確に知りたいです。

request.method == "GET"またはrequest.method == "POST"を記述するとどうなりますか?

22
user2657599

request.method == "POST"の結果はブール値です-ユーザーからの現在の要求がHTTP "POST"メソッドを使用して実行された場合はTrue、そうでない場合はFalseの(通常はHTTP "GET" 、しかし他の方法もあります)。

GETとPOST の違いについては、Alasadirが指摘した質問への回答で詳しく読むことができます 。簡単に言うと、POSTリクエストは通常​​フォーム送信に使用されます-フォームの処理がサーバー側の状態を変更する場合に必要です(たとえば、登録フォームの場合、データベースにユーザーを追加します)。 GETは、通常のHTTP要求(たとえば、ブラウザにURLを入力するだけの場合)や、副作用なしで処理できるフォーム(検索フォームなど)に使用されます。

コードは通常、送信されたフォームを処理するコードと非バインドフォームを表示するコードを区別するために、条件ステートメントで使用されます。

if request.method == "POST":
    # HTTP Method POST. That means the form was submitted by a user
    # and we can find her filled out answers using the request.POST QueryDict
else:
    # Normal GET Request (most likely).
    # We should probably display the form, so it can be filled
    # out by the user and submitted. 

そして、ここに別の例があります。 Djangoドキュメントから直接取得します 、Djangoフォームライブラリを使用します。

from Django.shortcuts import render
from Django.http import HttpResponseRedirect

def contact(request):
    if request.method == 'POST': # If the form has been submitted...
        form = ContactForm(request.POST) # A form bound to the POST data
        if form.is_valid(): # All validation rules pass
            # Process the data in form.cleaned_data
            # ...
            return HttpResponseRedirect('/thanks/') # Redirect after POST
    else:
        form = ContactForm() # An unbound form

    return render(request, 'contact.html', {
        'form': form,
    })
26
Ludwik Trammer

request.methodはリクエストメソッドのタイプを返しますGET,POST,PUT,DELETEなど。返された後、文字列と比較しています。比較演算子は常にブール値(True or False)。

リクエストされたメソッドタイプに基づいて機能を処理する必要がある場合があります。

if request.method == "GET":
    # functionality 1
Elif request.method == "POST":
    # functionality 2
Elif request.method == "PUT":
    # functionality 3
Elif request.method == "DELETE":
    # functionality 4

リクエストメソッドの場合、GETデータはurlとともに渡されます。要求メソッドの場合、POSTデータは本体内で渡されます。セキュリティメソッドの観点からすると、POSTの方が優れています。

11