ryotankの備考録日記

趣味の電子工作についての備考録などなど

電子工作作業報告書管理アプリその21

models.pyの作業内容や備考などはTextFieldに設定を変更したコード

#()内はフィールドオプションでmax_lengthの数はデータ型
#作業内容(work_details)と備考(remarks)はTextFieldに変更 2022-1-7
#CharFieldはmax_lengthは最大255まで それ以上はTextFieldにする

from django.db import models

class Input_data(models.Model):
    task_name = models.CharField(max_length=100)
    class_name = models.CharField(max_length=30)
    work_details = models.TextField(max_length=2000)
    remarks = models.TextField(max_length=2000)

    def __str__(self):
        return self.task_name

data.htmlはなぜあんな表示になったのか

<!--data.htmlはデータ入力画面1-->
<!--ewrn/templates/user/data.html-->

<!DOCTYPE html>
<html>
 
<head>
    <meta charset="utf-8" />
    <title>データ入力画面1フォーム</title>
</head>
 
<body>
    <h1>データ入力画面1フォーム</h1>
    <form method="POST" novalidate>
        {{ form.as_p }}   <!-- フォーム内容がすべて表示される-->
        {% csrf_token %}  <!-- この記述がないとエラーになる -->
        <button type="submit">入力画面2へ</button>
        <button type="clear">クリア</button>
    </form>
    
    <p>{{ message }}</p>
</body>
 
</html>

{{ form.as_p }}によりフォームをテンプレート(HTMLファイル)に
表示している

fromはインスタンス化したフォームクラスを入れた変数を指定する

as_pとは、formの各要素(inoutタグ)をpタグで囲む事


{% csrf_token %} はCSRF(クロスサイトリクエストフォージェリ)を検証する仕組み

Djangoのフォーム送信では、この記述が無いとエラーになる。

うーん見る限り何も間違ってないのにな~