728x90
반응형
SMALL
폼 (Form)
HTML에서 양식은 <form>...</form>에서 방문자가 텍스트 입력, 옵션 선택, 개체 또는 컨트롤 조작 등과 같은 작업을 수행한 다음 해당 정보를 다시 서버로 보낼 수 있도록 하는 내부 요소 모음이다.
<form action="/url/" method="post">
<label for="your_name">Your name: </label>
<input id="your_name" type="text" name="your_name">
<input type="submit" value="OK">
</form>
|
장고 폼
from django import forms
class ContactForm(forms.Form):
subject = forms.CharField(max_length=100)
message = forms.TextField()
sender = forms.EmailField()
cc_myself = forms.BooleanField(required=False)
class contact(request):
if request.method == 'POST':
form = ContactForm(request.POST)
if form.is_vaild(): # 데이터를 모델에 저장
contact = Contact(
subject = form.cleaned_data['subject'],
message = form.cleaned_data['message'],
sender = form.cleaned_data['sender'],
cc_myself = form.cleaned_data['cc_myself'],
)
contact.save()
return HttpResponseRedirect('/thanks')
else:
form = ContactForm()
return render(request, 'contact.html', {'form': form})
contact.html 템플릿
<form action="/contact/" method="post">
{% csrf_token %}
<label for="subject">제목:</label>
<input type="text" name="subject" id="subject"
value="{{ form.cleaned_data['subject'] }}">
<label for="message">메시지:</label>
<textarea name="message" id="message">
{{ form.cleaned_data['message'] }}
</textarea>
<label for="sender">보낸 사람:</label>
<input type="email" name="sender" id="sender"
value="{{ form.cleaned_data['sender'] }}">
<input type="checkbox" name="cc_myself" id="cc_myself"
{{ form.cleaned_data['cc_myself'] ? 'checked' : '' }}>
CC 나 자신
<input type="submit" value="보내기">
</form>
장고 폼 처리 순서
단계 | 설명 |
사전 준비 | Form 클래스를 정의한다. |
GET 처리 | Form 객체를 생성하고 템플릿에 처리를 위임한다. |
템플릿 | Form 태그를 생성한다. |
웹 브라우저 | Form을 표시한다. |
POST 처리 | 사용자 입력을 수신하고 유효성 검사를 수행한다. |
유효성 검사 | 데이터가 유효한지 확인한다. |
데이터 처리 | 데이터가 유효한 경우 데이터베이스에 저장한다. |
리다이렉트 | 성공적으로 처리된 경우 새 페이지로 리다이렉트한다. |
ModelForm 클래스
ModelForm 클래스는 데이터베이스 모델인 모델을 기반으로 하는 Form 클래스이다. ModelForm 클래스는 모델 클래스를 상속하고 Meta 클래스에 다음 속성을 정의한다.
|
ModelForm 클래스는 Form 클래스의 기능을 포함하고 있으며 다음 기능을 추가로 제공한다.
|
https://docs.djangoproject.com/en/4.2/topics/forms/
728x90
반응형
LIST
'App Programming > Django' 카테고리의 다른 글
[Django] Books 어플리케이션 (2) (0) | 2023.06.27 |
---|---|
[Django] Books 어플리케이션 (1) (0) | 2023.06.27 |
[Django] 템플릿 시스템 (2) (0) | 2023.06.26 |
[Django] 템플릿 시스템 (1) (0) | 2023.06.26 |
[Django] 셸로 데이터 다루기 (0) | 2023.06.23 |