• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

게시판 글쓰기

22.01.03 20:07 작성 조회수 259

1

from flask import Flask
from flask import request
from flask import render_template
from pymongo import MongoClient

client = MongoClient('localhost', 27017)
db = client.pythonwebmake

app = Flask(__name__)


@app.route('/write', methods=['get', 'post'])
def write():
if request.method == 'post':
name = request.form.get("name")
title = request.form.get("title")
contents = request.form.get("contents")
doc = {
"name": name,
"title": title,
"contents": contents
}
db.pythonweb.insert_one(doc)
return ""
else:
return render_template("index.html")


if __name__ == '__main__':
app.run('0.0.0.0', port=5000, debug=True)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>게시판 웹사이트</title>
</head>
<body>
<table>
<form name="form" method="post" action="/write"></form>
<tr>
<td>작성자</td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td>제목</td>
<td><input type="text" name="title"></td>
</tr>
<tr>
<td>내용</td>
<td><textarea name="contents"></textarea></td>
</tr>
<tr>
<td colspan="2"><input type="submit"></td>
</tr>
</form>
</table>
</body>
</html>

localhost:5000/write에서 인풋들의 값을 입력해서 제출을 눌러도 아무 반응 없고 studio3t에도 데이터들이 넘어오지 않습니다

답변 1

답변을 작성해보세요.

1

이런류의 오류가 발생했을때는 여러가지 관점에서 테스트를 해보며 오류의 원인을 찾아야 합니다.

1. html 에서 입력한 데이터가 url 쪽으로 전달이 되는지

2. 데이터베이스와 연결이 제대로 되고 있는지

이런 요소들을 모두 확인해보며 오류를 추적해봐야 합니다.

 

첫번째 상황 같은 경우는

if request.method == 'POST':

        print("METHOD OK")

        name = request.form.get("name")

        title = request.form.get("title")

        contents = request.form.get("contents")

        print("requests ok {} {} {}".format(name, title, contents))

이런 식으로 print() 문을 활용하여 의심가는 구간에 출력을 해보면 어느지점까지 print() 되는지를 확인하여 체크해볼 수 있는데 올려주신 코드를 실행해보니 print("METHOD OK") 구간도 출력되지 않고 반응이 없는걸로 보아 아예 진행이 안됨을 알 수 있었습니다. 

그래서 html 파일을 다시 확인해보니

<form name="form" method="POST" action="/write"></form>

<tr>

            <td>작성자</td>

            <td><input type="text" name="name"></td>

</tr>    

... 생략....

</form>

이런식으로 작성하신걸 확인할 수 있었습니다. form 태그를 위에서 닫아 버렸기 때문에 submit 이 동작하지 않아서 생기는 오류 였습니다.