django_form

sunjin·2023년 4월 5일
0

Django

목록 보기
11/12

Django form

사용자 입력 데이터를 수집하고, 처리 및 유효성 검증을 수행하기 위한 도구, 유효성 검사를 단순화하고 자동화 할 수 있는 기능을 제공한다.


  1. form class 선언
  • app 파일에 forms.py를 생성한다.
# articles/forms.py

from django import forms

class ArticleForm(forms.Form):
	title = forms.CharField(max_length=10)
    content = forms.CharField(widget=forms.Textarea)
  1. New 파일 생성하기

# 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

FormModelForm
사용자 입력 데이터를 db에 저장하지 않을때 (ex.로그인)사용자 입력 데이터를 db에 저장해야 할때 (회원가입)

modelForm class 선언

# forms.py

from django import forms 
from .models import Article

class ArticleForm(form.ModelForm):
	class Meta:
    	model = Article
        fields = '__all__'
  • Meta class : ModelForm의 정보를 작성하는 곳
  • fields = ('title',) 등과 같이 쓸수도 있다.

model form 적용한 create 작성 (게시글 작성)

# 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)
profile
🍀

0개의 댓글