Атрибут form_class
Атрибут form_class применяется к классу FormView
и определяет класс формы Django, который будет использоваться
для отображения полей ввода и обработки данных. Этот атрибут
является обязательным для работы представления. Класс формы
должен наследоваться от forms.Form или
forms.ModelForm.
Синтаксис
class MyFormView(FormView):
form_class = MyForm
Пример
Давайте создадим представление для формы обратной связи с использованием form_class:
from django import forms
from django.views.generic import FormView
from django.shortcuts import redirect
from django.urls import reverse_lazy
class ContactForm(forms.Form):
name = forms.CharField(max_length=100)
email = forms.EmailField()
message = forms.CharField(widget=forms.Textarea)
class ContactFormView(FormView):
template_name = 'contact.html'
form_class = ContactForm
success_url = reverse_lazy('thanks')
def form_valid(self, form):
# Process the form data
name = form.cleaned_data['name']
email = form.cleaned_data['email']
message = form.cleaned_data['message']
print(f"Received message from {name} ({email}): {message}")
return super().form_valid(form)
Результат выполнения кода при успешной отправке:
"Received message from John Doe (john@example.com): Hello!"
Пример
Давайте используем form_class с моделью и создадим форму для регистрации пользователя:
from django import forms
from django.views.generic import FormView
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
from django.urls import reverse_lazy
class RegistrationForm(UserCreationForm):
email = forms.EmailField(required=True)
class Meta:
model = User
fields = ['username', 'email', 'password1', 'password2']
class RegisterView(FormView):
template_name = 'register.html'
form_class = RegistrationForm
success_url = reverse_lazy('login')
def form_valid(self, form):
user = form.save()
print(f"User created: {user.username}")
return super().form_valid(form)
Результат выполнения кода:
"User created: john_doe"
Смотрите также
-
атрибут
success_url,
который задает URL для перенаправления после успешной отправки формы -
метод
get_form,
который возвращает экземпляр формы для отображения -
метод
form_valid,
который вызывается при успешной валидации формы -
класс
CreateView,
который упрощает создание объектов через ModelForm