파이썬으로 데이터를 읽어서 HTML을 이용하고 메일을 보내고자 하는데요.

조회수 870회

안녕하세요.

파이썬 이제 시작한 엔지니어입니다.. 완전 초보라서 정말 쉬운 질문인데 이해가 가지 않아서 여기에 올립니다.

우선 간단하게 로직은 이렇습니다.

  1. DB에서 데이터를 읽음 (여러row)
  2. 이것을 HTML을 이용하여 예쁘게 테이블화 시켜서 내역을 메일로 발송

이러한 간단한 로직인데, 전부 했는데 막히는 부분이 읽은 row를 테이블화 하는 것 입니다.

for문으로 돌리다 보니 읽고 메일보내고 읽고 메일보내고 하는데요.. 이걸 한방에 빵 보내고 싶은데... 아무리 List를 해봐도...배열을 만들어도 잘 모르겠습니다.

정말 초보적인 질문인데 정말 찾다찾다 이해가 안가서 올립니다.

감사합니다.

1 답변

  • 좋아요

    1

    싫어요
    채택 취소하기

    템플릿을 이용해보세요.

    pip install jinja2
    

    template.html 파일

    {% macro yhjung(data) -%}
    <div>{{ data | addNum}}</div>
    {%- endmacro%}
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional/EN">
    <html>
      <head>
        <title>Untitled</title>
        <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
      </head>
      <body>
        {% for data in datas -%}
            {{ yhjung(data) }}
        {% endfor %}
        <div>{{ clever_function() }}</div>
      </body>
    </html>
    

    파이썬 파일

    import os
    from jinja2 import Environment, FileSystemLoader
    THIS_DIR = os.path.dirname(os.path.abspath(__file__))
    j2_env = Environment(loader=FileSystemLoader(THIS_DIR))
    
    def addNum(value):
        return int(value) + 2
    
    
    def clever_function():
        return "HELLO"
    
    
    def main():
        contents = j2_env.get_template('template.html').render(datas=range(10), clever_function=clever_function)
        print(contents)
    
    if __name__ == "__main__":
        j2_env.filters["addNum"] = addNum
        main()
    

    같은 디렉토리에 파이썬 파일과 템플릿파일을 넣고 파이썬 파일을 실행해보세요.

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

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.