Удобно было бы создавать формы с помошью класса.. И нате вам! Django умеет и это!
Создадим в нашем проекте файл forms.py:
Импортируем модуль:
from django import forms
Создаём класс — наследник Form:
class ContactForm(forms.Form): subject = forms.CharField() email = forms.EmailField(required=False) message = forms.CharField()
Процесс создания очень напоминает создание модели данных django. И опять таки знание английского вас спасёт в понимании кода. Объяснять тут нечего.
Как пользоваться:
Идём в файл с представлениями (views.py) :
Импортим созданный файл:
from gigaapp.forms import ContactForm
Пишем представление:
def some_page(request): f = ContactForm({'subject': 'Hello', 'email': 'adrian@example.com', 'message': 'Nice site!'}) return HttpResponse(f.as_p())
Мы создали экземпляр класса. Причём обратите внимание, что мы заполняем поля! Т.е. при загрузке они уже будут иметь определённое значение. Вы можете не делать этого.
Можете оставить класс не заполненным:
f = ContactForm()
Так форма будет пустой при загрузке.
Теперь о выводе.
Я вывел форму в виде блоков p.
То есть так:
<p><label for="id_subject">Subject:</label> <input type="text" name="subject" value="Hello" id="id_subject"></p> <p><label for="id_email">Email:</label> <input type="text" name="email" value="adrian@example.com" id="id_email"></p> <p><label for="id_message">Message:</label> <input type="text" name="message" value="Nice site!" id="id_message"></p>
Можно также вывести в виде ul или просто набором input `ов. соответственно f.as_ul() или f
Можно выводить также отдельно:
f['subject'] f['email']
и тд..