2017-01-25 17 views
3

Jinja2を使用してPython3を使用してGolangコードを作成しています。私は最終的なコードの中の関数に引用符で囲まれたいくつかのパラメータを渡す必要がありますが、Jinja2は二重引用符をエスケープしていません。 私のPythonコードのようなものです: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}" 

そしてそれらのどれも働きました。何か案は?

は:)ありがとう)

"解決":

私のPythonコードは今あるので、私は、 `に二重引用符に変更:

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

そして、私の最後のゴーコード次のとおりです。

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

これはGoで動作します。それは最善の解決策ではありませんが、それは働いています...

答えて

4

これを行うための別の方法は自動エスケープを防止

e.({{ function|safe }}) 

されていると思います。

+0

ありがとうございました!これは完全に働いた:) –

1

これはJinja2のautoescapingのためです。 the documentationに記載されているように、これを回避するには、Markupオブジェクトにテキストをラップすることをお勧めします。

関連する問題