HTTP Form
- HTML 양식을 사용하여 데이터를 전송
- form 태그를 사용
- Django뿐만 아니라 모든 웹 프레임워크 및 서버에서 사용 가능
- 클라이언트-서버 통신
- HTTP 요청으로 데이터를 서버에 보냄
- GET: 데이터베이스를 건드리는 작업을 한다
- POST: 데이터베이스는 접근하지 않고 / 페이지를 연다
- action 속성은 데이터를 전송할 URL을 지정, method 속성은 HTTP 메서드 지정
<form action="/submit/" method="post">
<label for="name">Name:</label>
<input type="text" id="name" name="name"><br><br>
<label for="content">Content:</label>
<input type="content" id="content" name="content"><br><br>
<button type="submit">Submit</button>
</form>
from django.http import HttpResponse
def submit_view(request):
if request.method == "POST":
name = request.POST.get('name')
email = request.POST.get('content')
return HttpResponse(f"Name: {name}, Content: {content}")
Django Form
- HTML 양식 자동 생성, 데이터 자동 검증, 강화된 보안 기능 등을 제공하는 Django 라이브러리
- HTTP Form 작업 간소화
- 객체 지향
- Python 클래스로 양식 정의
from django import forms
# Form 클래스 정의
class MyForm(forms.Form):
name = forms.CharField(label='Name', max_length=100)
email = forms.EmailField(label='Email')
from django.shortcuts import render
def my_form_view(request):
if request.method == "POST":
form = MyForm(request.POST)
if form.is_valid(): # 자동 검증
name = form.cleaned_data['name']
email = form.cleaned_data['email']
return HttpResponse(f"Name: {name}, Email: {email}")
else:
form = MyForm()
return render(request, 'my_form.html', {'form': form})
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Submit</button>
</form>