미해결
남박사의 파이썬으로 실전 웹사이트 만들기
pymongo.errors.ServerSelectionTimeoutError 및 DB연결 문제
안녕하세요
몇 가지 문제가 생겨 질문드립니다.
1. 글쓰기 html파일은 잘 작동하는데 글상세보기로 넘어가지지 않습니다.
2. db연결이 잘 되었는지가 궁금한데 robo 3T상 myweb이라는 db이름이 안나와 확인이 불가합니다.
어딘가 놓친 부분이 없는지 확인 부탁드립니다.
아래는 error 화면 및 소스코드입니다.
참고로 아래와 같이 프린트는 잘 진행됩니다.
# -*- coding: cp949 -*-
from flask import Flask
from flask import request
from flask import render_template
from flask_pymongo import PyMongo
from datetime import datetime
from bson.objectid import ObjectId
from flask import abort
import time
from flask_pymongo.wrappers import Database
from pymongo import database
app = Flask(__name__)
# 프로토콜명 :// 주소 : 포트 / db이름
app.config["MONGO_URI"] = "mongodb://locolhost:27017/myweb"
mongo = PyMongo(app)
@app.template_filter("formatdatetime")
def format_datetime(value):
if value is None:
return ""
now_timestamp = time.time()
offset = datetime.fromtimestamp(now_timestamp) - database.utcfromtimestamp(now_timestamp)
vlaue = datetime.fromtimestamp(int(value)/1000) + offset
return value.strftime('%Y-%m-%d %H:%M:%S')
@app.route("/view")
def board_view():
idx = request.args.get("idx")
if idx is not None:
board = mongo.db.board
board.find_one({"_id": ObjectId(idx)})
if database is not None:
result = {
"id": database.get("_id"),
"name": database.get("name"),
"title": database.get("title"),
"contents": database.get("contents"),
"pubdate": database.get("pubdate"),
"view": database.get("view")
}
return render_template("view.html", result=result)
return abort(404) # Not Found
@app.route("/write", methods=["GET", "POST"])
def board_write():
if request.method == "POST":
name = request.form.get("name")
title = request.form.get("title")
contents = request.form.get("contents")
print(name, title, contents)
current_utc_time = round(datetime.utcnow().timestamp()*1000)
board = mongo.db.board
post = {
"name": name,
"title": title,
"contents": contents,
"pubdate": current_utc_time,
"view": 0
}
x = board.insert_one(post)
print(x.insert_id)
return ""
else:
return render_template("write.html")
if __name__ == "__main__":
app.run(host="0.0.0.0", debug=True, port=9000)