Удобно было бы создавать формы с помошью класса.. И нате вам! 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']
и тд..







