Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What is going on with this article?
@Kobayashi2019

初心者が10分で実装するコメント機能

More than 1 year has passed since last update.

初めに

実務なんかで使えません。
フレームワークとか高尚なものは使いません。
というか使えません。

めっちゃ簡単にできたので投稿

コメント機能

フォームを作り、その下にコメントを表示するだけ
chrome.PNG
コメントを入力、送信
chrome2.PNG
コメントが表示される
chrome3.PNG

手順

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-c
4.以下のurlにアクセスする。
http://localhost:8000/cgi-bin/comment.py

1
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Kobayashi2019
大阪工業大学学部4年、専門はロボットなのにプログラミングしかしない男。
techtrain
プロのエンジニアを目指すU30(30歳以下)の方に現役エンジニアにメンタリングもらえるコミュニティです。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
1
Help us understand the problem. What is going on with this article?