0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Djangoでフォームを送信する

Posted at

はじめに

こちらの記事の続きで書いてます。

ルーティングの記述

以下のURLパターンを追記。

./app/urls.py
urlpatterns = [
    ......
    path("form", views.form, name="form"),
]

ビューの記述

以下を追記。

./app/views.py
def form(request):
  params = {}
  if(request.method == 'POST'):
    fluit = request.POST['fluit']
    params = {
      'fluit': fluit,
    }
  return render(request, 'app/form.html', params)

if(request.method == 'POST'):は、POSTで受けた場合のみ、if文の内容を実行するという処理になります。
fluit = request.POST['fluit']は、POSTのパラメータ(fluit)に入っている文字を、Pythonの変数(fluit)に格納します。
params = {}で初期化してますので、POSTで受けていない場合は空データのparamsがHTMLテンプレートに渡されます。

HTMLの記述

./templates/app/form.html
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>FormTest</title>
</head>
<body>
  <h1>FormTest</h1>
  <p>フォーム送信テスト</p>
  <form action="{% url 'form' %}" method="post">
    {% csrf_token %}
    <label for="fluit">好きなフルーツは?: </label>
    <input id="fluit" type="text" name="fluit">
    <input type="submit" value="送信">
  </form>
  {% if fluit %}
  <p>{{ fluit }}</p>
  {% endif %}
</body>
</html>

<form action="{% url 'form' %}" method="post">
こちらは送信先設定です。{% url 'form' %}は、views.pyから与えられた引数で送信先URLに書き換えられます。

{% csrf_token %}
正しいフォームから送られた値なのかチェックする仕組み(CSRF対策)で用いられます。

{% if fluit %}{% endif %}
templateの中にif文を記述することができます。
この場合ですと、fluitにデータがなければif文の中身を表示しません。
あれば、fluitに入っている文字を表示します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?