Django Form Validation Framework на AppEngine: Как удалить HTML и т. Д.? - PullRequest
1 голос
/ 14 сентября 2009

Я использую платформу проверки форм Django в AppEngine (http://code.google.com/appengine/articles/djangoforms.html),, например:

data = MyForm(data=self.request.POST)
  if data.is_valid():
    entity = data.save(commit=False)
    entity.put()

Интересно, есть ли способ предварительной обработки данных POST (удаления вредоносного кода, HTML и т. Д.) Перед их сохранением. Кажется, что любая библиотека проверки формы должна предлагать что-то подобное, не так ли?

Спасибо

Ханнес

Ответы [ 3 ]

2 голосов
/ 15 сентября 2009

Краткий ответ:

forms.is_valid() автоматически заполняет словарь forms.cleaned_data, вызывая метод clean (). Если вы хотите выполнить какую-либо пользовательскую проверку, определите свое собственное «clean_filed_name», которое возвращает значение очищенного поля или повышает forms.ValidationError(). При ошибке соответствующая ошибка в поле заполняется автоматически.

Длинный ответ:

См. Документацию

1 голос
/ 29 октября 2009

В дополнение к ответам выше, другая точка зрения: не надо. Сохраняйте пользовательский ввод с минимальной обработкой, насколько это практически возможно, и очищайте данные на выходе. Шаблоны Django предоставляют фильтры для этого - escape - это тот, который экранирует все теги HTML.

Преимущество этого подхода перед санацией данных во время ввода двояко: вы можете изменить способ очистки данных в любое время, не прибегая к «дедушке» всех старых данных, а когда пользователь хочет что-то редактировать, может показать им исходные данные, которые они ввели, а не «очищенную» версию. Очистка данных в неподходящее время также является основной причиной таких вещей, как двойной выход.

0 голосов
/ 14 сентября 2009

Да, конечно. Вы пробовали читать документацию по формам?

http://docs.djangoproject.com/en/dev/ref/forms/validation/

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