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

조회수 2077회

안녕하세요.

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

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

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

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

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

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

감사합니다.

  • (•́ ✖ •̀)
    알 수 없는 사용자

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()
    

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

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

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

(ಠ_ಠ)
(ಠ‿ಠ)