카테고리 없음

Django_HTTP Form과 Django Form

멍주다배 2025. 1. 10.

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>