2017-01-25 15 views
3

Я использую Jinja2 для создания кода Голанга с использованием Python3. Мне нужно передать некоторые параметры в кавычках функции в моем конечном коде, но Jinja2 не избегает двойных кавычек. Мой питон код что-то вроде:Исключение двойных кавычек при рендеринге в Jinja2

list_s = ['a', 'b'] 
string = '\"' + '", "'.join(list_s) + '\"' 
final_string = 'Function(' + string + ')' 
print(final_string) 

template.render({'function': final_string}) 

Мой шаблона:

e.({{function}}) 

Что я получаю в консоли (печать в коде Python):

Function("a", "b") 

Что я хотел в своем последнем коде в Go:

e.(Function("a", "b")) 

То, что я на самом деле получить в мой последний код:

e.(Function("a", "b")) 

Я уже пробовал:

'`\"`' , '`"`', "'\"'", "\\\"", "\N{Quotation Mark}" 

И никто из них не работал, как я хотел. Есть идеи?

Спасибо :))

"Решено":

Я изменил от двойных кавычек в ', так что мой питон код сейчас:

string = '`' + '`, `'.join(list_s) + '`' 

И мой окончательный код Go это:

e.(Function(`a`, `b`)) 

И это работает на Go. Это не лучшее решение, но оно работает ...

ответ

4

Альтернативный способ сделать это было бы

e.({{ function|safe }}) 

, который предотвращает автоматическое побеге.

+0

Спасибо! Это сработало отлично :) –

1

Это связано с автоакустированием Jinja2. Как описано в the documentation, рекомендуется избегать этого, чтобы обернуть текст в объект Markup.