초보자가 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-c
4. 다음 URL에 액세스합니다.
http://localhost:8000/cgi-bin/comment.py
Reference
이 문제에 관하여(초보자가 10분 내에 구현하는 코멘트 기능), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Kobayashi2019/items/97cb556fe6ff925296ab
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
양식을 만들고 그 아래에 댓글을 표시하면
댓글 입력, 전송
댓글이 표시됨
절차
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
Reference
이 문제에 관하여(초보자가 10분 내에 구현하는 코멘트 기능), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Kobayashi2019/items/97cb556fe6ff925296ab
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
#! /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>
'''
)
$ python -m http.server --cgi
Reference
이 문제에 관하여(초보자가 10분 내에 구현하는 코멘트 기능), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Kobayashi2019/items/97cb556fe6ff925296ab텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)