일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 알고리즘
- programmers
- 파이썬
- 코드트리
- 마라마라빔
- Kruskal
- 소프트웨어공학
- 모각코
- DP
- codetree
- 동적계획법
- 함밥
- 그리디알고리즘
- django
- BFS
- 실습
- minimum spanning tree
- 데이터베이스
- Bellman-Ford
- Planned
- 최소스패닝트리
- 백준
- SQL
- 종합설계
- B대면노래방
- DFS
- 백트래킹
- 장고
- 프로그래머스
- MyPlaylist
- Today
- Total
Leta Learns
django | Forms 본문
<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 질문 등록 기능 만들기
장고 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 |