사용자 입력 데이터를 수집하고, 처리 및 유효성 검증을 수행하기 위한 도구, 유효성 검사를 단순화하고 자동화 할 수 있는 기능을 제공한다.
# articles/forms.py
from django import forms
class ArticleForm(forms.Form):
title = forms.CharField(max_length=10)
content = forms.CharField(widget=forms.Textarea)
# articles/views.py
from .forms import ArticleForm
def new(request):
form = ArticleForm()
context = { 'form':form, }
return render(request, 'article/new.html', context)
<!-- articles/new.html -->
<form action =" { % url 'articles:create' %}" method="POST">
{ % csrf_token % }
{{ form.as_p }}
<input type="submit">
</form>
Form | ModelForm |
---|---|
사용자 입력 데이터를 db에 저장하지 않을때 (ex.로그인) | 사용자 입력 데이터를 db에 저장해야 할때 (회원가입) |
# forms.py
from django import forms
from .models import Article
class ArticleForm(form.ModelForm):
class Meta:
model = Article
fields = '__all__'
# article/views.py
def create(request):
# HTTP requests method가 POST라면
if request.method == 'POST':
form = ArticleForm(request.POST)
if form.is_valid():
article = form.save()
return redirect('articles:detail', article.pk)
# POST가 아니라면
else:
form = ArticleForm()
context = {
'form': form,
}
return render(request, 'articles/new.html', context)