Будет ли \ n в шаблонах jinja2 создать проблему? - PullRequest
0 голосов
/ 25 марта 2020

Я создаю таблицу, используя шаблон jinja2. Когда я начинаю писать весь код html в одну строку, он разбивает таблицу, отправленную по электронной почте.

Поэтому я пишу

table_row = '<tr>\
                    <td>{{dev}}</td>\
                    <td>{{pr_count}}</td>\
                </tr>'
table_row_template = jinja2.Template(table_row)

В большом l oop Я начинаю добавлять данные в таблицу, используя шаблон строки.

for developer in developer_json:
     dev_count_list = dev_count_list\
                     + table_row_template.render(dev = dev_count[0], pr_count = dev_count[1]) + '\n'

Наконец, когда я рендеринг с использованием dev_count_list внутри базового шаблона, все работает нормально.

Мой вопрос - Как \n интерпретируется шаблоном jinja2. Будет ли это добавить новую строку или просто пишет \n снова

1 Ответ

1 голос
/ 25 марта 2020

Рассмотрим этот минимальный пример:

t = Template("Hello \n{{ something }}!")
output = t.render(something="World")
print(output)
for b in bytearray(output, 'ascii'):
    print(b, chr(b))

Это приводит к побитному отображению строки:

Hello 
World!
72 H
101 e
108 l
108 l
111 o
32  
10 

87 W
111 o
114 r
108 l
100 d
33 !

Итак, как вы можете видеть, символ \n (LF) , 10 десятичных) сохраняется при рендеринге выходной строки.

...