Leta Learns

django | Forms 본문

Django

django | Forms

leta 2021. 7. 8. 17:32

<form></form> 내부에 필요한 input값들을 일일이 추가하여 사용자로부터 필요한 데이터들을 받아왔음.

=> 장고에서는 Form 기능 제공 (쉽고 빠르게 구현 가능)

 

Form 장점

  • form 태그 내부에 input 태그들 자동 생성
  • is_valid() => 유효성 검사 fast

 

forms.py (app 폴더 안에 생성하기)

from django import forms
from .models import Blog

class BlogForm(forms.ModelForm):
    class Meta:
        model = Blog
        fields = ['title', 'writer', 'body', 'image']

=> 블로그 모델(model = Blog)의 form 내부에 사용할 필드(컬럼)를 설정한 것.

 

Meta 클래스

: 데이터에 대한 데이터. 다른 데이터를 설명해주는 데이터.

  장고에서 클래스 정의할 때 내부 클래스로 사용됨. 상위 클래스에게 meta data 제공.

   2021.07.03 - [Django] - [점프 투 장고] 2-10 질문 등록 기능 만들기

 

[점프 투 장고] 2-10 질문 등록 기능 만들기

[4] pybo/forms.py에 장고 폼 작성하기 from django import forms from pybo.models import Question  class QuestionForm(forms.ModelForm): class Meta:  model = Question  fields = ['subject', 'content']..

letalearns.tistory.com

 

 

장고 form 사용 방법 (in HTML 파일)

form 사용법 기능
form.as_table 각각의 input 태그를 tr 태그 안에 감싸서 반환.
form.as_p p 태그
form.as_ul li 태그

 

 

views.py (=> form 사용해서 new_with_django_form 함수 만들기)

from .forms import BlogForm #BlogForm 쓸 거니까 import 해줌

#--이전 코드들 생략하겠음

def new_with_django_form(request):
    form = BlogForm()
    return render(request, 'new_with_django_form.html', {"form":form})

 

views.py (=> form 사용해서 create_with_django_form 함수 만들기)

def create_with_django_form(request):
    form = BlogForm()
    if form.is_valid(): #유효성 검사
        new_blog = form.save(commit=False) #commit=False (임시저장. 나머지 필드를 채우기 위해서)
        new_blog.pub_date = timezone.now()
        new_blog.save()
        return redirect(request, 'blog:detail', new_blog.id)
    return redirect('home')

 

forms.py에서 만든 BlogForm을 사용하면 코드 길이를 많이 줄일 수 있음.

(=> 필요한 필드들을 forms.py에서 미리 만들고 그것들을 사용하므로).

 

 

is_valid() 유효성 검사

: 사용자가 보낸 데이터들을 검사하는 것

  view함수에서 CRUD 중 create, update의 경우 사용자가 어떤 데이터를 보냈는지 검사하는 것이 매우 중요.

  (ex) 실습으로 해온 Blog 테이블은 title, writer, body가 빈 칸으로 들어오면 안돼. 이런 조건들을 검사해주는 것).

  장고 form을 사용하면 is_valid()를 통해 쉽게 유효성 검사 가능.

 

 

 

'Django' 카테고리의 다른 글

django | User 모델을 이용한 Signup, User 확장  (0) 2021.07.16
django | User 모델을 이용한 login, logout  (0) 2021.07.13
django | Media 파일  (0) 2021.07.08
django | Static 파일  (0) 2021.07.07
django | template 상속, 앱 분리  (0) 2021.07.07
Comments