python)formによるデータ生成/転送


「フォームを使用したデータ生成/転送」


#!/usr/local/bin/python3
print("Content-Type: text/html")
print()
import cgi, os

files = os.listdir('data')
listStr = " "
for item in files:
  listStr += '<li><a href="index.py?id={name}">{name}</a></li>'.format(name=item)

form = cgi.FieldStorage()
if 'id' in form:
  pageId = form["id"].value
  description = open('data/'+pageId, 'r').read()
  
else:
  pageId = 'Welcome'
  description = 'Hello, web'
  
print('''<!doctype html>
<html>
<head>
  <title>WEB1 - Welcome</title>
  <meta charset="utf-8">
</head>
<body>
  <h1><a href="index.py">WEB</a></h1>
  <ol>{listStr}</ol>
  <h2>{title}</h2>
  <p>{desc}</p>
</body>
</html>
'''.format(title = pageId, desc = description, listStr = listStr))
以上のように
複数のデータ(記事タイトル、本文、タイトルリスト)はファイルによって制御されます.
Webアプリケーション
データの作成と転送を実現します.
1)データを生成できるページを作成します.pyという名前のファイルを作成し、実行権限を付与
(ターミナル-create.pyがあるディレクトリで実行)
sudo chmod a+x create.py
注意)create.pyはindexです.pyのコードと似ているため、インデックス.pyをコピーして生成
2) index.pyで作成します.pyへのリンク
<a href="create.py">create</a>
3) index.pyからデータを生成するテーブル(フォーム)を作成するには
<form action="process_create.py">
  <p><input type="text" name="title" placeholder="title"><p>
  <textarea rows="4" name="title" placeholder="description"></textarea>
  <input type="submit">
</form>

  • < form action="">
    データの送信先を設定

  • < input type="text">
    入力可能なテキストのセルを1つ作成

  • < input type="submit">
    submit(コミット)ボタンの作成

  • < input name=""> & < textarea name="">
    データ転送時にㅇの名義で転送

  • < input placeholder=""> & < textarea placeholder="">
    入力ボックスに表示される文

  • create.pyページには、データ合成フォームのみが表示されます
    else条件文のpageId値とdescription値を「」に変更

  • Inputラベルをpラベルで囲んで改行する(pラベルはブロック要素)
  • Webページを再ロードする場合、フォームは次のようになります.

    4)フォームタグの転送方法をpostに変更する.
    <form action="process_create.py" method="post">
  • フォームタグに書き込みメソッド属性がない場合、デフォルトはgetです.
  • 参照)
    データを作成および転送します.
    「転送」ページのアドレスにクエリー・リストが含まれている場合は、
    別のユーザーがアドレスに接続されています.
    転送されたデータを変更または削除する問題が発生する可能性があります.
    ユーザーが情報を取得するサイトです.
    get方式を使用するとurlアドレスにクエリーリストが含まれます.
    urlをクエリーを含むリストに共有すると、アクセス者はより正確なアドレスにアクセスできます.
    ただし、ユーザがデータを作成、変更または削除することによってデータを送信する場合、
    他のユーザーが転送されたデータにアクセスできないことを確認します.
    秘密裏にデータを送信するpost方式を使用するべきです.
    5) create.pyの最終コードは以下の通りです.
    #!/usr/local/bin/python3
    print("Content-Type: text/html")
    print()
    import cgi, os
    
    files = os.listdir('data')
    listStr = " "
    for item in files:
      listStr += '<li><a href="index.py?id={name}">{name}</a></li>'.format(name=item)
    
    form = cgi.FieldStorage()
    if 'id' in form:
      pageId = form["id"].value
      description = open('data/'+pageId, 'r').read()
      
    else:
      pageId = ''
      description = ''
      
    print('''<!doctype html>
    <html>
    <head>
      <title>WEB1 - Welcome</title>
      <meta charset="utf-8">
    </head>
    <body>
      <h1><a href="index.py">WEB</a></h1>
      <ol>{listStr}</ol>
      <a href="create.py">create</a>
      <form action="process_create.py">
        <p><input type="text" name="title" placeholder="title"></p>
        <textarea rows="4" name="title" placeholder="description"></textarea>
        <p><input type="submit"></p>
      </form>
      <h2>{title}</h2>
      <p>{desc}</p>
    </body>
    </html>
    '''.format(title = pageId, desc = description, listStr = listStr))
    [ソース]ライフコードWEB 2-Python
    https://opentutorials.org/module/3357