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


안녕하세요.

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

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

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

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

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

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

감사합니다.


조회수 117


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

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

  • 2018년 02월 02일에 작성됨

  • 너무나 감사합니다 ~!!!    Joo Hyungkwon   2018.2.5 07:55     

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close