Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python jinja2中的转义引号_Python_Jinja2 - Fatal编程技术网

Python jinja2中的转义引号

Python jinja2中的转义引号,python,jinja2,Python,Jinja2,我正在jinja文件中构建一个json对象: object_name = { property_name: "{{ _("Some Text which might have "quotes" in it") }}" } 然后在脚本标记中导入上面的jinja2文件 注意:u(“文本”)用于替换为翻译文本,因此()中的文本将替换为另一种语言的文本,因此我无法预测翻译是否包含双引号 知道如何转义传入的引号并将其转换为“例如” 已编辑 解决方案: 对我们来说,解决这个问题的办法是让pyth

我正在jinja文件中构建一个json对象:

object_name = {
    property_name: "{{ _("Some Text which might have "quotes" in it")  }}"
}
然后在脚本标记中导入上面的jinja2文件

注意:u(“文本”)用于替换为翻译文本,因此()中的文本将替换为另一种语言的文本,因此我无法预测翻译是否包含双引号

知道如何转义传入的引号并将其转换为“例如”

已编辑

解决方案:

对我们来说,解决这个问题的办法是让python遍历所有的翻译,并避开所有的求变。但我们始终必须确保至少英文文本不会出现问题,而且无论如何,我们已经控制了这一点……到目前为止:)

也请查看此文档


不清楚这个问题。如果使用单个反斜杠转义无效,也可以使用

object_name = {
    property_name: "{{ _(\\\"Some Text which might have \\\"quotes\\\" in it\\\")  }}"
}

flask
中,有一个名为
tojson
的默认过滤器,您可以使用该过滤器,或者使用纯
jinja2
,您可以创建自己的
tojson
过滤器:

>>> import json
>>> env = jinja2.Environment()
>>> env.filters['tojson'] = json.dumps
>>> tmpl = env.from_string("""\
object_name = {
    property_name: {{ _(text)|tojson  }}
}""")
>>> print tmpl.render({'_': lambda x: x, 'text': 'Some text with "Quotes"'})
object_name = {
    property_name: "Some text with \"Quotes\""
}
Jinja2有很好的过滤器。如果您从字符串生成json,它将生成用双引号括起来的字符串“”。您可以在javascript中安全地使用它。而且您不需要自己加引号

string = {{ html_string|tojson }};
另一个选项-在Python中创建dict,然后使用

jsObject = {{ py_dict|tojson }};

是的,用反斜杠转义是有效的,但英文文本将自动被替换为例如法文文本,我们永远不知道法文文本中是否有“in it
tojson
很棒”。有一个对象列表,我需要它作为json数组<代码>标记|映射(attribute='title')|列表| tojson