Python | Django | htmlファイルを利用したフォーム設定方法

2021年7月14日

公開日:2021/7/14

Pythonには,DjangoというWebアプリケーションフレームワークがある.フレームワークのため,Djangoを利用するとWebアプリを通常よりも短時間で開発することが可能になる.

前記事にて,「モデルフォームにおけるエラー発生方法」を記した.前記事での設定をそのまま引き継いだ上で,本記事では,「htmlファイルを利用したフォーム設定方法」を以下4つの構成にて記す.

  1. “include"利用により,他のhtmlファイルを表示
  2. フォームの表示を変更方法
  3. “include~with"を利用したフォームの表示を変更方法
  4. “form method"の変更方法

◆実施環境

Python 3.8.8
Django 3.2.3

■htmlファイルを利用したフォーム設定方法

  1. “include"利用により,他のhtmlファイルを表示

ブラウザのURLに"http://127.0.0.1:8000/form_application/form_bird"を入力すると,以下が表示される.以下は,"form_project/templates/form_temp/form_bird.html"の内容を表示している."form_bird.html"に"include"を利用することで,新たに作成するファイル"form_template1.html"の内容を表示する.

“form_project/templates/form_temp"に"form_template1.html"を作成する.以下のような構成になる.

“form_project/templates/form_temp/form_bird.html"から一部を切り取り,"form_template1.html"に貼り付ける.以下のようになる.

<form method="POST">
{% csrf_token %}

{{ form.non_field_errors }}
{% if form.errors %}
  {% for item_label, item_content in form.errors.items %}
    {% if item_label != '__all__' %}
      <p><div style="color:red;">{{ item_label }}: {{ item_content.as_text }}</div></p>
    {% endif %}
  {% endfor %}
{% endif %}

{{ form.birdname.label }}: {{ form.birdname }}<br>

{{ form.title.label }}: {{ form.title }}<br>

{{ form.review.label }}: {{ form.review }}<br>

{{ form.author.label }}: {{ form.author }}<br>

<input type="submit" value="submit">
</form>

切り取り後,"form_project/templates/form_temp/form_bird.html"に"include"を利用したコードを追記し,以下のように編集する.

<!DOCTYPE html>
<html> 
<head> 
<meta charset="utf-8">
<title>Form</title> 
{% load static %}
<link rel="stylesheet" href="{% static 'css/style.css' %}">
</head>
<body> 
  {% include "form_app/form_template1.html" %} # 追記箇所
</body> 
</html>

ターミナルを開き,”conda activate 仮想環境名”を実行し,仮想環境に移行する(移行方法の詳細はこちら)."cd form_project"を実行することによって,”form_project”のディレクトリに移動する.その後,以下のように”python manage.py runserver”を実行する.実行後,以下が出力される.

(djangoenv) C:\Users\shiro\Desktop\210517_python development\myformtest\form_project
>python manage.py runserver

System check identified no issues (0 silenced). # 以下出力箇所
July 14, 2021 - 00:32:08
Django version 3.2.3, using settings 'form_project.settings'
Starting development server at http://127.0.0.1:8000/ 
Quit the server with CTRL-BREAK.

上記の"http://127.0.0.1:8000″をクリックする.以下ページに遷移する.

ブラウザのURLに"http://127.0.0.1:8000/form_application/form_bird"を入力すると,以下ページに遷移する.

  1. フォームの表示を変更方法

“form_project/templates/form_temp"に"form_template2.html"を作成する.以下のような構成になる.

“form_project/templates/form_temp"に"form_template2.html"を以下のように編集する.

<form method="POST">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="submit">
</form>

“form_project/templates/form_temp/form_bird.html"を以下のように編集する.

<!DOCTYPE html>
<html> 
<head> 
<meta charset="utf-8">
<title>Form</title> 
{% load static %}
<link rel="stylesheet" href="{% static 'css/style.css' %}">
</head>
<body> 
  {% include "form_temp/form_template2.html" %} # 変更箇所(template1 => template2)
</body> 
</html>

上記を保存し,ブラウザのURLに"http://127.0.0.1:8000/form_application/form_bird"を入力すると,以下ページに遷移する."form.as_p"の内容となる.

  1. “include~with"を利用したフォームの表示を変更方法

“form_project/templates/form_temp"に"form_template2.html"を以下のように編集する.

<form method="POST">
{% csrf_token %}
{% if as_table %}
  <table>
    {{ form.as_table }}
  </table>
{% elif as_ul %}
  {{ form.as_ul }}
{% else %}
  {{ form.as_p }}
{% endif %}
<input type="submit" value="submit">
</form>

“form_project/templates/form_temp/form_bird.html"を以下のように編集する.

<!DOCTYPE html>
<html> 
<head> 
<meta charset="utf-8">
<title>Form</title> 
{% load static %}
<link rel="stylesheet" href="{% static 'css/style.css' %}">
</head>
<body> 
  {% include "form_temp/form_template2.html" with as_ul=True %} # 変更箇所
</body> 
</html>

上記を保存し,ブラウザのURLに"http://127.0.0.1:8000/form_application/form_bird"を入力すると,以下ページに遷移する."form.as_ul"の内容となる.

“form_project/templates/form_temp/form_bird.html"を以下のように編集する.

<!DOCTYPE html>
<html> 
<head> 
<meta charset="utf-8">
<title>Form</title> 
{% load static %}
<link rel="stylesheet" href="{% static 'css/style.css' %}">
</head>
<body> 
  {% include "form_temp/form_template2.html" with as_table=True %} # 変更箇所
</body> 
</html>

上記を保存し,ブラウザのURLに"http://127.0.0.1:8000/form_application/form_bird"を入力すると,以下ページに遷移する."form.as_table"の内容となる.

  1. “form method"の変更方法

ブラウザ(Chrome バージョン:91.0.4472.124, 64ビット)のURLに"http://127.0.0.1:8000/form_application/form_bird"を入力すると,以下が表示される.ブラウザ画面で右クリックをし,"ページのソースを表示"を選択すると,ソースコードの詳細を確認できる.現在,赤枠の通り,"form method"は"POST"となっている."form_template2.html"と"form_bird.html"を変更することでmethodを変更することができる.

“form_project/templates/form_temp"に"form_template2.html"を以下のように編集する.

<form method="{% if method %}{{ method }}{% else %}POST{% endif %}"> # 変更箇所
{% csrf_token %}
{% if as_table %}
  <table>
    {{ form.as_table }}
  </table>
{% elif as_ul %}
  {{ form.as_ul }}
{% else %}
  {{ form.as_p }}
{% endif %}
<input type="submit" value="submit">
</form>

“form_project/templates/form_temp/form_bird.html"を以下のように編集する.

<!DOCTYPE html>
<html> 
<head> 
<meta charset="utf-8">
<title>Form</title> 
{% load static %}
<link rel="stylesheet" href="{% static 'css/style.css' %}">
</head>
<body> 
  {% include "form_temp/form_template2.html" with as_table=True method='GET' %} # 変更箇所
</body> 
</html>

上記を保存し,ブラウザのURLに"http://127.0.0.1:8000/form_application/form_bird"を入力すると,以下ページに遷移する.ブラウザ画面で右クリックをし,"ページのソースを表示"を選択すると,赤枠の通り,"form method"は"GET"となる.

以上