db 없는 flask 웹사이트 구조 질문드립니다.
안녕하세요 몇개월 전에 점프 투 플라스크 따라하면서 많이 배웠습니다.
이번에 만들고 싶은 웹사이트가 생겨서 만들어 보려고 하는데, 파이보와는 다르게 데이터가 고정적이라서 db를 사용하지 않으려고 합니다.
project/
├ init.py
├ models.py
├ :
└ datadir/
├ dataA.txt
├ dataB.txt
└ dataC.txt
구조는 대략 이렇습니다.
데이터가 텍스트 파일에 있고, models.py에는 db model이 아닌 파이썬 클래스가 있습니다.
class Map:
def __init__(self, id, name):
self.id = id
self.name = name
ㄴmodels.py 파일에 있는 class 중 하나입니다.
텍스트 파일에서 데이터를 추출해서 models.py에 있는 class 틀에 맞게 가공해서 인스턴스를 생성해주려고 합니다.
여기에서 궁금한 점이, 이 추출하고 인스턴스를 생성해주는 작업을 언제하고 어디서 해줘야 하는가 입니다..
만든 인스턴스들을 웹 사이트에 보여주려면 이 작업을 먼저 해야할 것 같은데 아직 flask가 구동되는 원리라든가 순서를 잘 모르겠습니다.
늘 감사드립니다!
오현준 님 755
2020년 12월 29일 5:53 오후
1개의 답변이 있습니다. 1 / 1 Page
안녕하세요.
Map이라는 클래스로 Question과 같은 모델을 대체하여 사용하고 싶으신거 같습니다.
그럼 우선 map 데이터를 view함수 또는 템플릿에서 어떻게 사용할지 결정하셔야 합니다.
만약 템플릿에서 다음과 같이 사용한다고 가정하면 다음처럼 파일을 생성해서 하면 되지 않을까요?
아래는 가상의 파일이고 테스트해 보지 못했습니다.
show_map.html
{% for m in map %}
ID는 {{ m.id }}, 이름은 {{ m.name }}
{% endfor %}
models.py
def load_map():
result = []
f = open("data.txt", 'r')
for line in f.readlines():
temp = line.split(":")
_id = temp[0]
name = temp[1]
result.append(Map(_id, name))
f.close()
return result
class Map:
def __init__(self, id, name):
self.id = id
self.name = name
view.py
@bp.route('생략')
def show_map():
map = load_map()
...
return render_template('show_map.html', map=map)
두번째 방법은 테이블을 하나 생성하고 텍스트 데이터를 테이블에 넣고 플라스크의 모델 개발 방식을 그대로 가져가는 방법이 있습니다. 저라면 첫번째 방법보다는 두번째 방법을 사용할것 같네요.
박응용 님
M 2020년 12월 29일 6:13 오후