Post Request を使用して Django サーバーにデータを送信する

Salman Mehmood 2023年6月20日
Post Request を使用して Django サーバーにデータを送信する

この Django に関する説明では、post および get リクエストと、Django で post を使用して CSRF トークンを実装する方法について簡単に紹介します。

post リクエストを使用してデータを Django サーバーに送信する

リクエストを送信したり、レスポンスを受け取ったりするときはいつでも、HTTP プロトコルを使用します。 HTTP には getpostputdelete などの複数のメソッドがありますが、ここでは getpost の 2つのメソッドに焦点を当てます。

画像を取得するためにリンクにアクセスするとき、サーバーから何かを期待しているため、それは get リクエストです。 サーバーに何かを送信したい場合は、フォームに記入してデータを送信している可能性があります。 それが post メソッドです。

検索バーを使用してデータを検索すると、get メソッドがバックグラウンドで動作し、アドレス バーにデータが表示されます。

パスワードやその他の秘密情報である可能性のあるデータを送信する場合、get メソッドは使用しません。 バックエンドで post メソッドを使用します。

post メソッドを使用する 2つ目の理由は、多数のフィールドを持つフォーム全体の複数のデータを送信し、アドレス バーにすべてを表示したくない場合です。 技術的には、データの送信には常に post メソッドを使用する必要があります。

最初のステップは、フォームに移動し、メソッド属性を post として設定することです。 デフォルトでは、フォームは get メソッドを使用します。

<form action='add' method='post'>
    Enter 1st number<input type="text" name='num1'><br>
    Enter 2nd number<input type="text" name='num2'><br>

</form>

post メソッドが正しく機能しているか見てみましょう。 このコードを Django プロジェクトで使用することを期待しているので、サーバーを実行してブラウザにアクセスしてください。

出力:

Django 投稿リクエスト - 出力

フォームを送信するとエラーが発生し、少なくともアドレス バーにはデータがありませんが、何が問題なのでしょうか? このエラーは、CSRF 検証が失敗したことを示しています。

インターネット上でいくつかのハッキング手法が利用できるため、エラーが発生します。 CSRF は、データを安全に送信するのに役立つタグです。

ただし、この攻撃についてはあまり説明しません。 CSRFについて検索できます。

Django には、このエラーを回避する機能が組み込まれています。 settings.py ファイルに移動すると、MIDDLEWARE リストが見つかります。このリストには、データの送信中に使用する特定の CSRF 手法が既にあることがわかります。

Django 投稿リクエスト - MIDDLEWARE

Jinja コードを使用して、その CSRF トークンをフォームで使用する必要があります。

<form action='add' method='post'>
    {% csrf_token %}
    Enter 1st number<input type="text" name='num1'><br>
    Enter 2nd number<input type="text" name='num2'><br>


</form>

views.py ファイルを開いて、このデモ コードを記述する必要があります。

def add(request):
    val1 = int(request.POST["num1"])
    val2 = int(request.POST["num2"])
    res = val1 + val2

    return render(request, "request.html", {"result": res})

したがって、このコードでは、2つの整数を合計し、その結果を request.html に送信するだけで、エラーは発生しません。

著者: Salman Mehmood
Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn