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가 구동되는 원리라든가 순서를 잘 모르겠습니다.

늘 감사드립니다!

오현준 651

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 오후

자세한 답변 정말 감사드립니다ㅠㅠ 말씀하신 두번째 방법에서 테이블이라는 게 db를 말씀하시는 건가요? - 오현준님, 2020년 12월 29일 6:52 오후 추천 , 대댓글
@오현준님 네 db입니다. 모델 만들고 거기에 데이터 넣으면 평범한 개발 프로세스가 됩니다. - 박응용님, 2020년 12월 29일 7:41 오후 추천 , 대댓글
@박응용님 죄송하지만 그럼 한가지만 더 여쭤보겠습니다..ㅠㅠ 제가 db를 사용하지 않으려는 이유가 이 고정적이고 적은 양의 데이터 때문에 db를 사용한다면, 후에 aws db를 빌려야 할텐데 첫 달은 무료지만 나중에는 15달러씩 내야하기 때문인데요. 이런 경우에는 답변에서 설명해주신 첫번 째 방법밖에 없을까요? - 오현준님, 2020년 12월 30일 9:03 오전 추천 , 대댓글
@오현준님 데이터가 적다면 aws 사용하실 필요없이 개발단계에서 사용했던 sqlite를 사용해도 충분합니다. - 박응용님, 2020년 12월 30일 9:08 오전 추천 , 대댓글
@박응용님 아 저는 db를 쓰면 무조건 aws를 써야한다고 알고있었네요.. 정말 감사합니다 좋은 하루 되세요! - 오현준님, 2020년 12월 30일 10:03 오전 추천 , 대댓글