Jinja2を使用して、Python3でGolangコードを作成しています。いくつかのパラメーターを引用符で囲んで最終的なコードの関数に渡す必要がありますが、Jinja2は二重引用符をエスケープしていません。私のpythonコードは次のようなものです:
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) + '`'
そして私の最後のGoコードは:
e.(Function(`a`, `b`))
そして、これはGoで機能します。それは最善の解決策ではありませんが、うまくいきます...
これを行う別の方法は、
e.({{ function|safe }})
自動エスケープを防ぎます。
これは、Jinja2の自動エスケープによるものです。 ドキュメント で説明されているように、これを回避するには、テキストをMarkup
オブジェクトでラップすることをお勧めします。