2013-06-21 5 views
0

Я новичок в архитектуре MVC. Может кто-нибудь сказать мне, что такое формы, что они точно делают и как они связаны с моделями. В соответствии с форматами документации django выполняется ряд общих задач, связанных с формой. Каковы эти задачи? Я вижу, что формы часто упоминаются во время регистрации, они просто используются для этого в одиночку? Существуют ли формы, которые используются как запросы POST полей Model? Если это так, в Modelform/forms у нас не могут быть поля, которые не связаны с существующими моделями?Django: Как формируются формы, связанные с моделями?

Спасибо!

ответ

2

Концептуально формы служат обработчиком для ввода данных в вашем HTML, чтобы использовать эти данные где-то в вашем приложении (в ваших представлениях).

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

Формы делают много вещей для обеих этих функций. Они варьируются от модульности, расширяемости и простоты управления (поскольку они могут быть легко определены, взаимозаменяемы, унаследованы и т. Д. В Python) для валидации (один из крупных). Валидация имеет решающее значение - и, вероятно, это то, о чем вы говорите в терминах регистрации. Django Forms будет проверять соответствие определению, определенному в вашем классе Form, или наследовать код проверки, если вы используете что-то вроде ModelForm. В случае ModelForm форма будет проверяться на основе атрибутов, присвоенных вашим полям модели (т. Е. Ни одна строка не вводится в поле Integer).

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

https://docs.djangoproject.com/en/dev/topics/forms/ https://docs.djangoproject.com/en/dev/topics/forms/modelforms/

Чтобы ответить на некоторые из ваших вопросов. У вас могут быть поля, не связанные с вашей моделью в ModelForms, но вам придется обрабатывать их соответственно в своем представлении. Вам также необязательно, чтобы все поля модели были доступны для ввода в форме (используя исключение в классе Meta).

+0

Отлично, это было прекрасно! Таким образом, формы - это единственный способ ввода данных атрибутов Model в базу данных из html (POST-запросы)? – name

+0

Ну, не единственный способ - но, безусловно, самый чистый. В дополнение к тому, что упомянуто @tsurantino, формы дают вам некоторую защиту от несанкционированного доступа (чтение о 'csrf_token'). – karthikr

+0

Получил это. Спасибо, цурантино и karthikr – name