Form 사용
Form에 대한 공식 문서
https://docs.djangoproject.com/en/4.0/ref/forms/
Form 사용 준비
- (/App/forms.py) 파일 추가
- form의 기능들
(Model에 있는것과 유사)
Form 사용해보기
Test를 위한 준비
- (/App/forms.py) code 추가
- (/App/views.py)(/App/urls.py) Test용 form view 준비
- 실행 후 결과 (연결 잘 되어있음)
- (/templates/-/post_form2.html)(/App/views.py) Test용 templates만들기, 만든 templates 연결
- 실행 후 결과
form으로 표시하기
- (/templates/-/post_form2.html) form.as_p 사용
- 실행 후 결과
위젯
참고
- 공식문서 참고
- '기본 위젯'
- 위젯 = HTML의 Input type 이라고 생각하면 이해가 쉬움
- 더 동적으로 HTML Form Tag를 사용할 수 있다.
위젯 변경 Test
- (/App/forms.py) widget 추가
- 실행 후 결과
Choice 사용
- 이전 Mission에서 사용했던 Choice를 바로 사용할 수 있다
2022.04.23 - [공부/[SW][Backend][Pre-Origin] Main Pag] - [The Origin][2차][Mission][성찰] FAQ 만들기
- (/App/forms.py) Choice 추가
- 실행 후 결과
이름 지정
- (/App/forms.py) 각 필드에 이름 추가
- 실행 후 결과
Form을 통한 render
https://docs.djangoproject.com/en/4.0/ref/forms/api/#django.forms.Form.get_context
https://docs.djangoproject.com/en/4.0/topics/forms/#working-with-form-templates
Form.as_p()
- 공식 문서 참고
- 실행 후 검사로 Data 확인 ( <p> 태그 확인 )
Form.as_ul()
- 공식 문서 참고
- 실행 후 검사로 Data 확인 ( <li> 태그 확인 )
Form.as_table()
- 공식 문서 참고
- 실행 후 검사로 Data 확인 (Table이라고 확 보이지는 않음)
반복을 통한 form 출력
간단한 방식
- (/templates/-/post_form2.html) 반복문 추가
- 실행 후 결과
Form에서의 Post
(/App/views.py)
PostBaseForm(request.POST)
- POST만 실행시 Image를 불러 올 수 없음
- FILES로 저장을 따로하기 때문에 추가가 필요
- form = PostBaseForm(request.POST, request.FILES)
- 유효성 검사를 위해서 cleaned_data 사용
- 그냥 값을 변환하기 위해서는 changed_data도 있음 (유효성 검사 없음
- https://docs.djangoproject.com/en/4.0/ref/forms/api/#django.forms.Form.is_valid
- cleaned_data와 같이 유효성 검사를 위한 함수
- 조건으로 넣어서 해당 내용이 유효성에 맞는지 안맞는다면 다른 결과를 도출하게 바꿀 수 있음
Tip
Debug 방법 (EX_ POST 확인해볼 때)
- (/App/views.py) 코드 디버깅 시 변수의 Data들 확인 가능
- 조사식에서 간단하게 수정해서 Data가 가능한지 불가능한지 알 수 있음
'학습 > [The-Origin][SW][Backend] Main Pag' 카테고리의 다른 글
[The Origin][VSCODE][Django] 사용자(User) 내용 커스텀 하기 (0) | 2022.05.16 |
---|---|
[The Origin][VSCODE][Django][Form] 조금 활용 (0) | 2022.05.16 |
[The Origin][백엔드] 6주차 (0) | 2022.05.16 |
[The Origin][2차][Mission][성찰] FAQ 만들기 (0) | 2022.04.23 |
[The Origin][VSCODE][Django][CRUD] Delete (0) | 2022.04.22 |