Формы в django. Создаём форму в 2 строки!

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

и тд.. 

 

Похожий код:

Фото аватара
Алексей Петров

Программист, разработчик с 5 летним опытом работы. Учусь на разработчика игр на Unity и разработчика VR&AR реальности (виртуальной реальности). Основные языки программирования: C#, C++.

Оцените автора
Бла, бла код
Добавить комментарий