Создание форм с Django

Начнем с создания формы для отправки постов по email. Джанго имеет встроенные механизмы(forms framework), позволяющие легко создавать формы. Forms framework позволяет определить поля формы, указать способ их отображения и указать, как они должны проверять входные данные.

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

  • Form: позволяет создавать стандартные формы
  • ModelForm: позволяет создавать формы для создания или обновления экземпляров модели

Для начала создайте файл forms.py внутри вашего приложения 'blog', и отредактируйте его следующим образом:

from django import forms

class EmailPostForm(forms.Form):
    name = forms.CharField(max_length=25)
    email = forms.EmailField()
    to = forms.EmailField()
    comments = forms.CharField(required=False,
                               widget=forms.Textarea)

Это твоя первая форма Джанго. Рассмотрим код: мы создали форму путем наследования базового класса Form. Мы используем различные типы полей Джанго для их валидации.

Формы могут располагаться в любом месте проекта Джанго, но соглашение гласит, что их необходимо поместить в forms.py файл для каждого приложения.

Поле name является текстовым полем CharField. Этот тип поля отображается в HTML как<input type="text">. Каждый тип поля имеет графический элемент по умолчанию, который определяет, как это поле отображается в HTML. Графический элемент по умолчанию может быть переопределен атрибутом widget. В поле comments используется графический элемент textarea для отображения его в виде HTML-элемента<textarea>, а не <input>

Валидация полей также зависит от типа поля. Например, поля email и to являются EmailField. Для обоих полей требуется допустимый адрес электронной почты, в противном случае валидация получит ValidationError исключение и форма не будет отправляться. Другие параметры также принимаются во внимание при проверке формы: мы определим максимальную длину 25 символов для поля name и сделали поле comments необязательным с required = false. Все это также учитывается при валидации. Типы полей, используемые в этой форме, являются частью полей "Джанго". Список всех доступных полей формы можно посмотреть здесь: https://docs.djangoproject.com/en/1.8/ref/forms/fields/

results matching ""

    No results matching ""