Post Request を使用して Django サーバーにデータを送信する
この Django に関する説明では、post
および get
リクエストと、Django で post
を使用して CSRF トークンを実装する方法について簡単に紹介します。
post
リクエストを使用してデータを Django サーバーに送信する
リクエストを送信したり、レスポンスを受け取ったりするときはいつでも、HTTP プロトコルを使用します。 HTTP には get
、post
、put
、delete
などの複数のメソッドがありますが、ここでは get
と post
の 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 プロジェクトで使用することを期待しているので、サーバーを実行してブラウザにアクセスしてください。
出力:
フォームを送信するとエラーが発生し、少なくともアドレス バーにはデータがありませんが、何が問題なのでしょうか? このエラーは、CSRF 検証が失敗したことを示しています。
インターネット上でいくつかのハッキング手法が利用できるため、エラーが発生します。 CSRF は、データを安全に送信するのに役立つタグです。
ただし、この攻撃についてはあまり説明しません。 CSRFについて検索できます。
Django には、このエラーを回避する機能が組み込まれています。 settings.py
ファイルに移動すると、MIDDLEWARE
リストが見つかります。このリストには、データの送信中に使用する特定の CSRF 手法が既にあることがわかります。
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
に送信するだけで、エラーは発生しません。
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