Django 기초 - request 응답 처리

ID짱재·2021년 7월 16일
0

Django

목록 보기
4/43
post-thumbnail

🌈 request 응답 처리

🔥 request ()

🔥 redirect()

🔥 HttpResponse()

🔥 JsonResponse()


1. request()

  • request는 url를 통해 form에 입력한 사용자의 데이터를 포함하여 여러 요청된 정보를 갖고 있어요.
  • POST방식을 가진 간단한 로그인 form에 id는 'abcd'를 pw는 1234를 입력해 볼까요?
  • 터미널에 pirnt(request.POST)를 통해 확인해보면, request가 form에 입력한 데이터를 갖고 있는 것을 확인할 수 있어요.
<!DOCTYPE html>
<html lang="en">
  <body>
    <h1>hello Index!</h1>
    <form action="/" method="POST">
      {% csrf_token %} 👈 유해한 공격을 막기위한 장치로 반드시 필요
      <div><input type="text" name="id" /></div>
      <div><input type="password" name="pw" /></div>
      <div><input type="submit" value="login" /></div>
    </form>
  </body>
</html>
from django.shortcuts import render
def index(request):
    # print(request)
    # print(type(request))
    # print(dir(request))
    print(request.POST)
    return render(request, 'index.html')


2. redirect()

  • "return render()"가 아닌 "return redirect()"도 유용하게 사용할 수 있는데요, redirect는 해당 함수가 호출되었을 때, 지정해논 경로로 이동시키는 역할을 해요.
  • test url('http://127.0.0.1:8000/test/')로 진입하면, '/'로 redirect 하도록 처리해두었기 때문에 root 경로인 메인 페이지로 이동한답니다.
  • 즉, test()함수가 실행되면, index()함수가 최종적으로 response되겠네요:)
# urls.py
from django.contrib import admin
from django.urls import path
from main.views import test
urlpatterns = [
    path('admin/', admin.site.urls),
    path('/', index),
    path('test/', test),
]
# main/views.py
from django.shortcuts import render
from django.shortcuts import redirect
def index(request):
    return render(request, 'index.html')
def test(request):
    return redirect('/')

3. HttpResponse()

  • 'http://127.0.0.1:8000/test/'로 진입하면, views.py에서 test 함수가 실행되어, HttpResponse('hello HttpResponse')을 return 해보면, 화면에 hello HttpResponse라는 문구가 출력되는 것을 볼 수 있어요.
  • HttpResponse()를 통해 페이지에 나타날 content를 전달할 수 있지만, 일반적으로 render를 통해서 html 자체를 전달하는게 더 효과적인 것 같아요.
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def index(request):
    return render(request, 'index.html')
def test(request): 
    return HttpResponse('hello HttpResponse')


4. JsonResponse()

  • JsonResponse는 JSON(딕셔너리 형태) 타입을 파라미터로 받아, front쪽에서 다룰 수 있도록 전달해줘요.
  • 이에 'http://127.0.0.1:8000/test/'로 진입하면, views.py에서 d라는 변수에 할당된 딕셔너리가 화면에 출력됩니다.
from django.shortcuts import render
from django.http import JsonResponse
# Create your views here.
def index(request):
    return render(request, 'index.html')
def test(request):
    d = {'name':'jaewon', 'age':100}
    return JsonResponse(d)

profile
Keep Going, Keep Coding!

0개의 댓글