Django: Лучшая практика для маркировки полей модели как безопасной для шаблонов - PullRequest
4 голосов
/ 24 января 2011

Прямо сейчас я должен сделать что-то вроде (шаблон кода):

object.name|safe

Во многих случаях я просто забываю добавить фильтр safe. Мои вопросы:

  1. Эти объекты передаются пользователем и очищаются на уровне формы. Есть ли причина, почему я должен быть более осторожным, чтобы пометить их как безопасные?

  2. Если ответ на вышеприведенный вопрос «ты в порядке», как сделать поле модели безопасным по умолчанию? Не забывая использовать тег safe?

Ответы [ 2 ]

4 голосов
/ 24 января 2011

Что касается # 2, существует плохо документированная функция с именем mark_safe , которую вы можете использовать.Например, в пользовательском поле формы, которое я написал, мне нужно вернуть строку с кодом HTML для метода label_from_instance, поэтому я возвращаюсь, используя mark_safe:

return mark_safe( '<span class="foo">Some HTML output</span>' )
0 голосов
/ 24 января 2011

safe - это тег шаблона, связанный с кодировкой HTML, а не с проверкой объекта.
См. документацию

Вы должны использовать его, только если вы выводите TextField с данными HTML внутри, например, текстовым полем, которое пользователи заполняют tinyMCE или CKEditor

...