Sign In

TIL 웹개발 - Django form 정리

서경태
우선 form은 클라이언트가 데이터를 조회하거나 전송할 때 사용하는 태그(tag)다.
게시글을 작성하는 form을 작성하면 아래 코드와 같다.
# html에서 사용할 때

<form action="" method="">
  <label for="title">제목</label>  
  <input type="text" id="title" name="title">

  <label for="content">내용</label>
  <textarea id="content" name="content" cols=10 rows=10>
</form>
제목과 내용을 작성해 form형태로 서버에 전달해 처리한다.
이 form 형태를 쉽게 처리하는 기능을 django에서 제공하는데 D
jango model form이다.
데이터베이스 모델에 대응하는 폼을 자동으로 생성해주는 기능으로 위 코드처럼 별도로 폼을 정의하지 않아도 된다.
그리고 데이터베이스 기준에 따라 (텍스트, 숫자 등) 형식을 맞추지 않을 경우 자동으로 경고 메시지를 보내주기도 한다.

Django model form

1.
모델과 폼의 자동 연결
•
ModelForm을 사용하면, Django 모델에 정의된 필드를 기반으로 자동으로 폼 필드가 생성된다.
•
예를 들어, 모델에서 Charfield, DateField 등이 있다면, 해당 필드에 맞는 html 폼 필드가 생성된다.
2.
간편한 데이터 처리
•
모델 폼은 데이터의 유효성을 검사하고, 유효하다면 데이터베이스에 쉽게 저장할 수 있다.
•
form.save() 메소드를 사용하면 폼데이터를 모델 인스턴스로 변환하고 저장할 수 있다.
3.
유효성 검사
•
모델 폼은 모델에서 정의된 필드의 유효성 검사(예: 최대 길이, 필수 입력 여부)를 자동으로 처리한다.
•
추가적인 커스텀 유효성 검살르 쉽게 정의할 수 있다.

모델 폼 정의하는 방법

Article 데이터베이스 / models.py
from django.db import models

class Article(models.Model):
  title = models.CharField(max_length=50)
  content = modles.TextField()

  def __str__(self):
    return self.title
현재 title과 content라는 데이터 베이스가 있는 경우,
from django import forms
from .models import Article
# 위 models.py에서 Article 모델을 참조하도록 설정한다.

class ArticleForm(forms.ModelForm):
  class Meta:
    model = Article
    fields = ['title', 'content'] # 사용할 모델의 필드 지정
    # 모든 필드를 사용하고 싶다면
    # fields = "__all__"
이렇게 하면 모델폼을 정의하고 사용할 수 있다.
그럼 다시 html에서 아래와 같이 간단하게 사용할 수 있다.
# html에서 모델폼 사용

<form action="" method="">
  {{ form.as_p }}
</form>
그리고 해당 내용을 전송받는 view에서도 title과 content를 받아 새로운 article을 생성하는 번거로움 없이 아래 코드처럼 작성할 수 있다.
# view.py 에서

def create(request):
  form = ArticleForm(request.POST)
  if form.is_valid():
    article = form.save()
    return redirect('detail', article.pk)

# html form을 사용하는 경우 코드
# title = request.POST.get("title")
# content = request.POST.get("content")
# article = Article.objects.create(title=title, content=content)
# return redirect("detail", article.pk)
이처럼 모델폼을 사용하면 유효성 검사까지 간단하게 할 수 있다.
kyugntae-ai
Subscribe to 'kyugntae-ai'
Subscribe to my site to be the first to receive notifications and emails about the latest updates, including new posts.
Join Slashpage and subscribe to 'kyugntae-ai'!
Subscribe
👍