초보자가 10분 내에 구현하는 코멘트 기능

처음에



실무 따위로 사용할 수 없습니다.
프레임워크나 고상한 것은 사용하지 않습니다.
라고 할까 사용할 수 없습니다.

너무 쉽게 할 수 있었기 때문에 게시

코멘트 기능



양식을 만들고 그 아래에 댓글을 표시하면

댓글 입력, 전송

댓글이 표시됨


절차



1. 적당한 디렉토리(A로 한다)에 cgi-bin 디렉토리를 만든다.
2. 그 안에 다음 프로그램을 복사하고 comment.py라고 명명한다.

comment.py
#! /usr/bin/env python3

import sqlite3
import csv
import cgi
import sys
import io
from datetime import datetime

sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8")

db_path = "./comment.db"

con = sqlite3.connect(db_path)

con.row_factory = sqlite3.Row

cur = con.cursor()

htmlText = ""

try:
   cur.execute(
       "create table if not exists commentTable(id integer primary key autoincrement, comment text, date datetime);"
   )
except sqlite3.Error as e:
   print("ERROR:", e.args[0])

form = cgi.FieldStorage()
input_comment = form.getvalue("comment")

try:
    if input_comment is not None:
        date = datetime.now().strftime("%Y/%m/%d %H:%M:%S")
        cur.execute("insert into commentTable(comment, date)values(?, ?);", (input_comment, date))

except sqlite3.Error as e:
    print("ERROR:", e.args[0])

def show_database():
    try:
       cur.execute("select * from commentTable;")
    except sqlite3.Error as e:
       print("ERROR:", e.args[0])
       debug = "except completed"
    return 0

show_database()

rows = cur.fetchall()

if not rows:
   htmlText = "コメントはありません。"
else:
   for row in rows:
       if str(row["id"]):
           htmlText += str(row["date"]) + "<br>" + str(row["comment"])+ "</br>"

con.commit()
con.close()

print("Content-type: text/html; charset=utf-8")

print(
   f'''
    <!DOCTYPE html>
    <html lang="en" dir="ltr">
      <head>
        <meta charset="utf-8">
        <title>コメント</title>
      </head>
      <body>
        <div id="comment-div" class="">
          <h1>コメント</h1>
          <p>コメントを入力して下さい。</p>
          <form name="comment-form" class="" action="comment.py" method="post">
            <textarea name="comment" rows="8" cols="80"></textarea><br>
            <input type="submit" name="" value="送信">
          </form>
          <p>コメント</p>
          {htmlText}
        </div>
      </body>
    </html>
     '''
)

3. 디렉토리 A에서 다음 명령을 실행합니다.
$ python -m http.server --cgi

이제 로컬 서버가 서 있습니다.
그만두면 ctrl-c4. 다음 URL에 액세스합니다.
http://localhost:8000/cgi-bin/comment.py

좋은 웹페이지 즐겨찾기