2013-07-30 4 views
8

Я строю объект JSON в джинджа файле:Экранирование котировки в Jinja2

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

А затем импортировать вышеуказанный файл jinja2 в теге сценария

примечание: _ («Текст») используется для заменяются текстом перевода, поэтому текст в() будет заменен текстом другого языка, поэтому я не могу предсказать, будет ли перевод содержать двойные кавычки

любая идея, как избежать входящих котировок и преобразовать их в например "

Edited

Решение:

Решение этой задачи для нас было путем питон пройти через все переводы и избежать всех qoutations. но мы всегда должны убедиться, что по крайней мере, английский текст не будет проблематичным, и в любом случае мы имеем Controll над этим .... до сих пор :)

Посмотрите на этот документ Aswell

http://pology.nedohodnik.net/doc/user/en_US/ch-poformat.html#sec-poescapes

ответ

2

не понял вопрос ясно. если побег с одиночными обратной косой черты не получилось, избежать обратной косой черты, а также с помощью

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

Да убегает с обратными косыми чертами работами, но текст на английском языке будет автоматически заменен, например, французского текст, и мы никогда не знаем, если что французский текст имеет "в нем – Razmig

5

В 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\"" 
} 
+0

' tojson' велик. если бы список объектов, которые Мне нужно было как json array. 'Tags | map (attribute = 'title') | список | tojson' – luckydonald

Смежные вопросы