Flask SQLAlchemy 관련 질문드립니다.

조회수 396회

우선 구현 하려는 로직은 DB에 저장된 시간값(데이터)를 읽어와서 datetime 모듈을 통해 가공을 한번 거쳐서 웹에 표시할 때는 아래와 같은 방식으로 출력을 하려고 합니다.

아래 로직은 별도의 함수로 구현되어 있어서 정확히는 DB 데이터를 for문으로 가져온 다음 아래 함수를 호출하여 처리한 뒤 return 해서 처리된 값을 받아오고 있습니다.

(flask)

item = testdb.query.order_by(idx.desc())
for datas in item:
        save_time = return_time(datas.time)

(로직 처리 함수)

if (result < 60):
    return_time = "방금"
elif(result >= 60 and result < 3600):
    return_time = floor(result/60)
elif(result >= 3600 and result < 86400):
    return_time = floor(result/3600)
elif(result >= 86400 and result < 2419200):
    return_time = fllor(result/86400)
else:
    return_time = result.strftime('%Y-%m-%d')

하지만 이렇게 처리를 한 뒤에 render_template 함수를 사용해서 time=str(save_time)) 이런식으로 넘겨주게 되면, 하나의 값만 들어오고 for문을 리스트로 처리 하려고 했으나 원하는 방향대로 잘 출력이 되지 않습니다.

출력 예시)

방금 | (제목)

5분 전 | (제목)

1시간 전 | (제목)

이렇게 찍어내려고 합니다.

웹으로 인자를 넘길 때는 item=item, time=str(save_time) 이렇게 따로 넘길려고 하니

잘 안되네요, 코드가 많이 부족할 수 있지만 피드백 부탁드립니다.

1 답변

  • 질문글이 SQLalchemy 와 무관한거 아닌가 싶어요.

    구체적인 대답을 원하시면 로직과 템플릿에 대해서 확인해야할거같은데요

    from flask import Flask, render_template_string
    import datetime
    
    index = '''<html>
    <body>
    {% for i in datas %}
    <p> {{i[1]}} | {{i[0]}} </p>
    {% endfor %}
    </body>
    </html>
    '''
    app = Flask(__name__)
    
    def return_time(time):
        now = round(datetime.datetime.now().timestamp())
        r = []
        for i in time:
            t = round(datetime.datetime.strptime(i, '%Y-%m-%d %H:%M').timestamp())
            if now - t < 360:
                r.append('5분전')
            elif now - t < 1800:
                r.append('30분전')
            else:
                r.append(i)
        return r
    
    @app.route('/')
    def main():
        db_data = ['subject1','subject2','subject3']
        db_date = ['2021-05-11 16:00','2021-05-11 15:50','2021-05-10 15:35']
        db_date = return_time(db_date)
        return render_template_string(index, datas=zip(db_data,db_date))
    
    if __name__ == '__main__':
        app.run()
    
    5분전 | subject1
    
    30분전 | subject2
    
    2021-05-10 15:35 | subject3
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)