ModelForm
, Form
์ ์ง์ ํด์ ํผ์ ์์์ ์์ฑํด์ฃผ๋ ํด๋์ค
๋ฐ์ดํฐ ์ฒ๋ฆฌ ํ success_url
๋ก ์ง์ ๋ ์ฃผ์๋ก ์๋ ๋ฆฌ๋๋ ์
template_name
์ผ๋ก ํ
ํ๋ฆฟ ์ง์ ์ด ๊ฐ๋ฅ
class FormView:
template_name: str
form_class: cls
success_url: str
def form_valid(self, form: Form):
return response: HttpResponse
from myapp.forms import ContactForm
from django.views.generic.edit import FormView
class ContactFormView(FormView):
template_name = "contact.html"
form_class = ContactForm
success_url = "/thanks/"
def form_valid(self, form):
# This method is called when valid form data has been POSTed.
# It should return an HttpResponse.
form.send_email()
return super().form_valid(form)
from django import forms
from .models import Task
class TaskForm(forms.ModelForm):
class Meta:
model = Task
fields = ['title', 'type', 'due']
from django.http import HttpRequest, HttpResponse
from django.shortcuts import render, HttpResponseRedirect, redirect
from django.views.generic import TemplateView, CreateView, UpdateView, DeleteView, ListView, DetailView, FormView
from .models import Task, ChecklistItem
from django.utils import timezone
from django.core.paginator import Paginator
from django.urls import reverse_lazy
class TaskCreateView(FormView):
template_name = "pages/task_create.html"
form_class = TaskForm
success_url = '/'
def form_valid(self, form):
form.save()
return super().form_valid(form)
def form_valid(self, form):
"""If the form is valid, redirect to the supplied URL."""
return HttpResponseRedirect(self.get_success_url())
form_valid
์ฝ๋๋ฅผ ๊ทธ๋๋ก ์ฌ์ฌ์ฉํ๊ธฐ ์ํด์ super()
ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ค.super()
ํค์๋๊ฐ ๋ฌด์์ ์๋ฏธํ๋์ง ์์๋ณด์.class Student(Person):
def __init__(self, name, age, GPA):
super().__init__(name, age)
self.GPA = GPA
def get_name(self):
print(f'์ ๋ ๋ํ์ {self.name}์
๋๋ค.')
def get_GPA(self):
super().get_name() # ๋ถ๋ชจ ํด๋์ค(Person)์ get_name์ ํธ์ถ
print(f'์ ํ์ ์ {self.GPA}์
๋๋ค.')
super().๋ฉ์๋์ด๋ฆ ํํ
๋ก ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ธฐ๋ฐ์ ์ฑ์ ๊ตฌ์ถํ๋ ๊ฒฝ์ฐ Django์ ๋ชจ๋ธ๊ณผ ๋ฐ์ ํ๊ฒ ๋งคํ๋๋ ์์์ ๋ง๋ค ๊ฐ๋ฅ์ฑ์ด ๋์๋ฐ ์ด ๋, ์ฌ์ฉํ ์ ์๋ ๊ฒ์ด ๋ฐ๋ก ModelForm
Metaํด๋์ค๋ฅผ ์ฌ์ฉํด์ ๋ชจ๋ธ์ ์ฐ๊ฒฐํ๊ณ ์ฌ์ฉ
from django.forms import ModelForm
from myapp.models import Article
class ArticleForm(ModelForm):
class Meta:
model = Article
fields = ["pub_date", "headline", "content", "reporter"]