Чистые входные строки без использования классов формы django

Рекомендуем ли использовать Django для очистки входной строки, не проходя через систему форм Django?

То есть, я пишу код, который доставляет ввод формы через AJAX, поэтому я пропускаю все предложения модели django в форме модели. Но я хочу очистить входные данные перед отправкой в ​​базу данных.

Ответ 1

Модели Django Form относятся не только к формам рендеринга, они больше относятся к обработке и дезинфекции формы (GET/POST) ввода, и это то, что вы хотите сделать. Когда данные POST или GET из вашего запроса AJAX доходят до вашего сервера, он по существу неотличим от данных формы. Я бы рекомендовал создать модель формы, которая является моделью вашего запроса AJAX.

Подумайте о примере POST:

POST /login.jsp HTTP/1.1
Host: www.mysite.com
User-Agent: Mozilla/4.0
Content-Length: 27
Content-Type: application/x-www-form-urlencoded

userid=joe&password=guessme

Это может быть связано с запросом AJAX или формой, к тому времени, когда он попадает на ваш сервер, это не имеет большого значения! Конечно, они называются Form-моделями, потому что обычно это происходит с данными GET или POST, но это не должно быть из формы:)

Если вы создаете модель формы для представления своего запроса AJAX, вы получаете все крючки и санитацию, которые приходят с ней, и все это немного больше "django-esque".

Обновить относительно вашего комментария:

Я предполагаю, что у вас будет несколько классов классов. Очевидно, я не знаю, как разработана ваша система, но я дам вам совет.

Как вы сказали, вы будете использовать это для дезинфекции своих данных, чтобы определить свои классы форм на основе данных, которые вы отправляете. Например, если у меня есть запрос AJAX, который отправляет комментарий с данными Name, Email и CommentBody, которые будут иметь один класс Form. Если у меня есть другой запрос AJAX, который отправляет новую статью, которая отправляет Title, Author и ArticleBody, которая будет другим классом Form.

Не все ваши запросы AJAX обязательно нуждаются в Форме, если у вас есть вызов AJAX, который голосует за комментарий, вы, вероятно, не будете рассматривать это как форму, поскольку (я предполагаю) вам не нужно будет санировать любые данные.