flask에 있는 @app.route는 templates라는 폴더 안에 있는 파일만 연결할 수 있다.
- read.html 소스
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>read</title>
</head>
<body>
<div id="notice_div">
<h1 id="notice_text">test</h1>
</div>
<div id="Accordion_wrap">
<!-- run.py에서 context를 통해 보낸 데이터를 받아서 context 크기만큼 html로 출력함-->
{%for c in context%} <!-- context 크기만큼 for문 반복 -->
<div>
<span>{{c.name}}</span> <!-- board 컬랙션의 name 값 -->
</div>
<div>
<span>{{c.title}}</span> <!-- board 컬랙션의 title 값 -->
</div>
<div>
<span>{{c.contents}}</span> <!-- board 컬랙션의 contents 값 -->
</div>
데이터 가져옴
{%endfor%} <!-- for문 end -->
</div>
</body>
</html>
- run.py 소스
from flask import Flask, request
from flask import render_template
from flask_pymongo import PyMongo
from pymongo import MongoClient
app = Flask(__name__)
mongo = PyMongo()
client = MongoClient('mongodb://localhost', 27017) # 로컬환경에서 mongo db 연결
# client = MongoClient('mongodb://test:test@localhost', 27017) # db 인증 계정 생성 후 연결 방법
# neuruWeb = 스키마 이름을 느루웹으로 만듬
db = client.neuruWeb
@app.route('/')
def home():
return 'This is home!'
# data read 부분
@app.route('/read', methods=["GET"])
def notice_data_read():
# board 컬랙션에 있는 데이터를 다 찾아서 context 변수를 이용해 read.html파일로 보냄
context = db.board.find()
return render_template('read.html', context=context)
if __name__ == '__main__':
app.run('0.0.0.0', port=5000, debug=True)
- flask 서버 실행 --> python run.py
- Robo 3T로 mongo DB 데이터 확인 - board 컬랙션
board 컬랙션 안에 name, title, contents 에 데이터가 1,2,3 과 4,5,6이 들어있음으로 read.html에도 1,2,3 과 4,5,6이 출력되야한다.
- http://localhost:5000/read 에 접속 후 데이터 확인
데이터를 잘 가져온 것을 확인할 수 있다.
'study > flask' 카테고리의 다른 글
[flask] include -- html header, footer등 중복되는 html 처리 (0) | 2021.10.24 |
---|---|
[vs code] flask + mongoDB 연결(Write) (0) | 2021.10.24 |
[vs code] flask + mongo DB(설치, Robo 3T 연결) (0) | 2021.10.24 |
[vs code] Python flask 서버 구축 (0) | 2021.10.23 |