일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- minimum spanning tree
- 모각코
- codetree
- 알고리즘
- 실습
- programmers
- 마라마라빔
- 최소스패닝트리
- 코드트리
- 그리디알고리즘
- 백준
- BFS
- django
- 파이썬
- Bellman-Ford
- 프로그래머스
- 백트래킹
- B대면노래방
- MyPlaylist
- 동적계획법
- 장고
- Kruskal
- Planned
- 종합설계
- 소프트웨어공학
- 함밥
- SQL
- DFS
- 데이터베이스
- DP
- Today
- Total
Leta Learns
[점프 투 장고] 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']
장고 폼 : forms.Form을 상속받는 폼, forms.ModelForm을 상속받는 모델 폼 (2가지로 구분 가능)
모델 폼 : 모델과 연결된 폼, 모델 폼 객체를 저장하면 연결된 모델의 데이터 저장 가능.
장고 모델폼은 내부 클래스로 Meta 클래스를 반드시 가져야 함.
Meta 클래스에는 모델 폼이 사용할 모델과 모델의 필드들을 적어야 한다.
ex) QuestionForm 클래스는 Question 모델과 연결 (model = Question)
subject, content 필드를 사용 (fields = ['subject', 'content']
[7] 입력 데이터 저장하기
[파일명: C:\projects\mysite\pybo\views.py]
def question_create(request):
if request.method == 'POST':
form = QuestionForm(request.POST)
if form.is_valid():
question = form.save(commit=False)
question.create_date = timezone.now()
question.save()
return redirect('pybo:index')
else:
form = QuestionForm()
context = {'form':form}
return render(request, 'pybo/question_form.html', context)
1. 동일한 url 요청을 post, get 요청 방식에 따라 다르게 처리.
- <질문 등록하기> 버튼을 누르면 /pybo/question/create/가 get 방식으로 요청 -> 질문 등록 화면
- 입력값을 채운 후 <저장하기> 버튼을 누르면 /pybo/question/create/가 post 방식으로 요청 -> 데이터 저장
2. QuestionForm 객체도 get, post 방식 다르게 생성.
- get -> QuestionForm()
- post -> QuestionForm(request.POST) (전달받은 데이터로 폼의 값이 채워지도록)
3. question = form.save(commit=False) 에서 commit=False는 임시 저장을 의미.
폼으로 질문 데이터를 저장할 경우 Question 모델의 create_date에 값이 설정되지 않음 -> 오류 발생.
현재 폼에는 subject, content 필드만 존재함. create_date 필드는 x
-> 임시저장한 후 question 객체를 반환받아 create_date에 값을 설정하고 question.save()로 실제 저장.
참고 : wikidocs 점프 투 장고 https://wikidocs.net/70855
'Django' 카테고리의 다른 글
django | Model & Admin (0) | 2021.07.06 |
---|---|
django | 기본 틀 정리 (가상환경, 장고 설치, 서버 실행 etc) (0) | 2021.07.06 |
[점프 투 장고] 2-05 ~ 2-07 (0) | 2021.07.03 |
[점프 투 장고] 2-04 질문 목록과 질문 상세 기능 구현하기 (0) | 2021.07.01 |
[점프 투 장고] 2-03 개발 편의를 제공하는 장고 Admin (0) | 2021.07.01 |