기록과 정리의 공간

[프로젝트] Flask로 게시판 만들기 - 2 본문

프로젝트/게시판1

[프로젝트] Flask로 게시판 만들기 - 2

딸기맛도나쓰 2020. 7. 29. 20:37

Flask로 게시판 만들기 - 2 (참고 강의 링크-인프런 강의)
(공부 하며 기록이 필요한 부분들만 정리함)

  • 개발 환경 : windows 10 / Python 3.8.1 / vscode
  1. MongoDB 연결하기 (flask_pymongo라이브러리 공식 문서 링크)
  2. 게시물 작성 시간 구하기

1. MongoDB 연결하기

  • #1 : flask_pymongo의 PyMongo import하기

  • #2 : ["MONGO_URI"]는 지정된 문자열이므로 바꾸면 안된다. PyMongo는 localhost의 27017 포트에서 실행 중인 MongoDB서버에 연결되고, 이 때 DB의 이름은 myweb2(사용자가 지정)이다.

  • #3 : mongo라는 인스턴스로 #2에서 생성한 DB에 접근할 수 있게 된다.

  • #4 : board라는 이름의 컬렉션이 존재한다면 해당 객체가 리턴되고, 없다면 board라는 이름의 컬렉션이 생성됨. 그것을 board라는 변수에 할당함.

  • #5 : 테스트를 위해 board에 데이터를 삽입

from flask import Flask
from flask_pymongo import PyMongo #1

app = Flask(__name__)
app.config["MONGO_URI"] = "mongodb://localhost:27017/myweb2" #2
mongo = PyMongo(app) #3

board = mongo.db.board #4
test = { 
  "name": "test",
}
board.insert_one(test) #5

위 코드를 실행해준 후 ROBO 3T로 확인해보면 다음과 같이 myweb2 DB의 board컬렉션에 데이터가 삽입된 것을 확인할 수 있다.

2. 게시물 작성 시간 구하기

  • 파이썬 시간 다루기 : 링크 참고

  • template_filter() (사용법 링크)를 이용해 게시물 작성 시간을 나타내보자.

@app.template_filter("formatdatetime")
def format_datetime(value):
    if value is None:
        return ""

    now_timestamp = time.time()
    offset = datetime.fromtimestamp(now_timestamp) - datetime.utcfromtimestamp(now_timestamp)
    value = datetime.fromtimestamp(int(value / 1000)) + offset  
    return value.strftime('%Y-%m-%d %H:%M:%S')
# html파일에서 jinja문법을 이용해 아래와 같이 위에서 작성한 필터 사용하여 DB에 저장된 작성시간 가공 가능
{{result.pubdate|formatdatetime}}
Comments