Я испытываю то, что я считаю несколько странным поведением. В частности, если у меня есть строка, как это:Django Double Escaping Quotes и т. Д.
1984: Curriculum Unit
Дональд Р. Хог, Центр обучения, Джордж Оруэлл
«Центр для обучения издания» - обложка.
Это приводит к следующему после автоматического маскированные с помощью системы шаблонов Django:
1984: Curriculum Unit
Дональд Р. Хог, Центр обучения, Джордж Оруэлл
& Центр для изучения публикаций & quot; - Обложка.
Проблема, кажется, что "(цитата), который должен стать "
в настоящее время бежал в два раза, в результате чего &"
. Это приводит странно смотря на форматирование. Я использую Django 1.0.2, так что должен быть обновлен (хотя я должен отметить, что я использую пакет Ubuntu 9.04 с пакетом python-django), но это поведение противоречит предполагаемому поведению.
Я немного искал django.utils.html .py, который включает в себя фактическую функцию:
def escape (HTML):
"" "Возвращает данный HTML с амперсандах, цитаты и CARETS закодированный". ""
return mark_safe(force_unicode(html).replace('&','&').replace('<','<').replace('>', '>').replace('"', '"').replace("'",'''))
побег = allow_lazy (побег, юникод)
В любом случае, похоже, что он должен избегать & прежде чем что-либо еще, что будет хорошо. Поэтому я подозреваю, что его зовут дважды. Есть предположения?
Спасибо.
Обновление: Я был подозрительным, что это может иметь какое-то отношение к Django Ubuntu, которое оно отображает как «1.0.2-1», поэтому я установил «1.0.2-final» и испытываю ту же проблему.
Это поведение, которого я ожидал бы, но это не то, что я получаю. Например, вы сказали выше msg = "& == & в HTML" Я бы получил что-то вроде этого: "& & == & & amp; в HTML" То есть он выполняет эвакуацию один раз, затем выходит из & в беглом результате. Спасибо за быстрый ответ, хотя! – philipk
Ну, я пробовал делать что-то подобное, и все получилось просто отлично. Тем не менее, моя проблема с моим фактическим кодом не связана. Я собираюсь немного совать. – philipk