일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- js
- SSAFYcial
- 셀프넘버
- vitepwa
- sqld
- 싸피
- 리액트
- db
- 싸피10기
- git
- 백준
- 플로이드워셜
- react
- PWA
- 싸피셜
- VITE
- QuerySetAPI
- Django
- Python
- 알고리즘
- pwa적용하기
- 머신러닝종류
- Javascript
- SQL
- unionfind
- 14658
- 데코레이터
- TypeScript
- SSAFY
- queryset
- Today
- Total
Meme's IT
[Django] Form 본문
# HTML의 Form
지금까지는 사용자로부터 데이터를 받기위해 HTML 파일에서 form을 사용했다.
하지만 HTML의 form은 비정상적이거나, 악의적인 요청을 필터링할 수 없음
→ 유효성 검사가 필요함
# 유효성 검사란?
수집한 데이터가 정확하고 유효한 데이터인지 확인하는 과정
근데, 이걸 우리가 직접 하기엔 입력 값, 형식, 중복, 보안 등 고려할 것이 너무 많다...
그래서 Django가 제공하는 Form을 사용해보자!
# Django Form
사용자 입력 데이터를 수집하고, 처리 및 유효성 검사를 수행하기 위한 도구
→ 유효성 검사를 단순화하고 자동화 할 수 있는 기능을 제공함
# 써보기
앞에서 했던 게시판 만들기에서 이어서..
새로운 글을 쓰는 기능을 form을 이용해서 구현해보자
1. articles 폴더에 forms.py를 생성, 작성해준다.
# articles/forms.py
from django import forms
class ArticleForm(forms.Form):
title = forms.CharField(max_length=10)
content = forms.CharField()
2. articles/views.py에서 수정해준다.
# articles/views.py
def new(request):
form = ArticleForm()
context = {
'form' : form
}
return render(request, 'articles/new.html',context)
3. Template/new.html에서 기존의 HTML form 대신 Django form으로 바꿔준다.
/% new.html의 body중 form부분 %/
<form action="{% url "articles:create" %}" method="POST">
{% csrf_token %}
{{form}}
<input type="submit">
</form>
서버를 열어서 확인 가능
결과값이 너무 안예쁨...
new.html에서 {{form}} 부분을 다음과 같이 바꿔준다.
{{form.as_p}}
줄바꿈이 되는걸 확인할 수 있다.
다음과 같이 label, input 쌍을 특정 HTML 태그로 감싸는 옵션을
Form rendering options라고 하고,
https://docs.djangoproject.com/en/4.2/topics/forms/#form-rendering-options에서 확인할 수 있다.
위의 결과에서 content의 칸이 좀 더 넓어야하지 않을까?
input을 좀 더 키우고 싶은데...
→ Widget을 써보자
# Widgets
HTML 'input' element의 표현을 담당
# articles/forms.py
from django import forms
class ArticleForm(forms.Form):
title = forms.CharField(max_length=10)
content = forms.CharField(widget=forms.Textarea) # 이 부분에 widget이 들어감
'BackEnd > Django' 카테고리의 다른 글
[Django] view 함수 update (0) | 2023.10.04 |
---|---|
[Django] ModelForm (0) | 2023.10.04 |
[Django] HTTP request methods (0) | 2023.09.26 |
[Django] 게시판 만들기 - 수정 (0) | 2023.09.26 |
[Django] 게시판 만들기 - 삭제 (0) | 2023.09.26 |