英文:
Escaping double quotes while rendering in Jinja2
问题
我正在使用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"))
我已经尝试过以下方法:
'`' , '`', '\"\'\"\'', "\\\""
但它们都没有按照我期望的方式工作。有什么想法吗?
谢谢 :))
"解决方案":
我将双引号改为反引号,所以我的Python代码现在是:
string = '`' + '`, `'.join(list_s) + '`'
我的最终Go代码是:
e.(Function(`a`, `b`))
这在Go中可以正常工作。虽然这不是最好的解决方案,但它能正常工作...
英文:
I'm using Jinja2 to create Golang code using Python3. I need to pass some parameters in quotes to a function in my final code, but Jinja2 isn't escaping double quotes.
My python code is something like:
list_s = ['a', 'b']
string = '\"' + '", "'.join(list_s) + '\"'
final_string = 'Function(' + string + ')'
print(final_string)
template.render({'function': final_string})
My template is:
e.({{function}})
What I'm getting in the console (the print in the python code):
Function("a", "b")
What I wanted in my final code in Go:
e.(Function("a", "b"))
What I'm actually getting in my final code:
e.(Function("a", "b"))
I've already tried:
'`\"`' , '`"`', "'\"'", "\\\"", "\N{Quotation Mark}"
And none of them worked as I wanted. Any ideas?
Thank you :))
"Solved":
I changed from double quotes to `, so my python code now is:
string = '`' + '`, `'.join(list_s) + '`'
And my final Go code is:
e.(Function(`a`, `b`))
And this works on Go. It isn't the best solution but it is working...
答案1
得分: 25
这样做的另一种方式是
e.({{ function|safe }})
这样可以防止自动转义。
英文:
The alternative way to do this would have been
e.({{ function|safe }})
which prevents auto-escaping.
答案2
得分: 1
这是由于Jinja2的自动转义功能。如文档中所述,避免这种情况的推荐方法是将文本包装在一个Markup
对象中。
英文:
This is due to Jinja2 autoescaping. As described in the documentation, the recommended way to avoid this is to wrap the text in a Markup
object.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论