Django에서 GET
과 POST
요청을 처리하는 방법을 설명한다.
하나의 View에서 동시에 처리하고자 한다면, 바로 GET과 POST 요청을 동시에 처리하기
부분으로 넘어가도 된다.
GET 요청은 주로 데이터를 조회할 때 사용된다.
from django.shortcuts import render
def search(request):
query = request.GET.get('query', '') # URL에서 'query' 파라미터 가져오기
return render(request, 'search.html', {'query': query})
from django.urls import path
from .views import search
urlpatterns = [
path('search/', search, name='search'),
]
<form action="{% url 'search' %}" method="GET">
<input type="text" name="query">
<button type="submit">검색</button>
</form>
POST 요청은 데이터를 전송하거나 저장할 때 사용된다.
from django.shortcuts import render
from django.http import HttpResponse
def submit_form(request):
if request.method == "POST":
username = request.POST.get('username', '')
return HttpResponse(f"입력한 사용자 이름: {username}")
return render(request, 'form.html')
from django.urls import path
from .views import submit_form
urlpatterns = [
path('submit/', submit_form, name='submit_form'),
]
<form action="{% url 'submit_form' %}" method="POST">
{% csrf_token %}
<input type="text" name="username">
<button type="submit">전송</button>
</form>
GET 요청은 Form을 통해 데이터를 전달할 수 있으며, 직접 브라우저 주소창
에서 입력하여 접근할 수도 있다.
from django.shortcuts import render
def handle_request(request):
if request.method == "POST":
data = request.POST.get('data', '')
method_used = "POST"
else:
data = request.GET.get('query', '') # GET 요청에서 'query' 파라미터 가져오기
method_used = "GET"
return render(request, 'result.html', {'data': data, 'method': method_used})
from django.urls import path
from .views import handle_request
urlpatterns = [
path('handle/', handle_request, name='handle_request'),
]
<form action="{% url 'handle_request' %}" method="POST">
{% csrf_token %}
<input type="text" name="data">
<button type="submit">POST 요청</button>
</form>
<form action="{% url 'handle_request' %}" method="GET">
<input type="text" name="query">
<button type="submit">GET 요청</button>
</form>
GET 방식의 경우, 브라우저 주소창에서 직접 URL을 입력하여 요청할 수도 있습니다.
http://127.0.0.1:8000/handle/?query=HelloDjango
@nullvuild