GET 방식을 사용하려면 url에 parameter를 추가해주면 됨
POST 방식을 사용하기 위해서는 html 안에 form을 만들어줘야 함
<!--hello_world.html-->
form : 서버에게 보내는 명세서 같은 개념
어떤 글을 작성한다거나 파일을 첨부한다거나의 그 데이터들이 POST body 안에 들어가는데 그 데이터들이 form 안에 다 들어가게 될 것
action의 value에는 우리가 요청하려는 url을 넣어줘야 함
url 주소를 <form action="/account/hello_world/"> 이렇게 넣어주면 이 주소로 요청을 보낸다는 것
추가적으로 method="post" 라고 명시해줌
form만 있다고 해서 끝나는 것이 아니다. 어떤 상호작용을 해야 서버로 보내는 것이기 때문에 input 태그의 타입 submit으로 버튼을 하나 만들고, 모양도 지정 <input type="submit" class="btn btn-primary">
강의 초반에 부트스트랩을 적용했었는데 btn btn-primary는 그 라이브러리 안에 있는 클래스들 중 하나
그래서 btn과 btn-primary 이 둘을 동시에 적용하게 되면 이제 primary의 색을 가진 그럴듯한 버튼이 만들어짐
버튼 안에 들어갈 텍스트는 value 값으로 지정 -> value="POST"

POST라는 버튼이 하나 생겼고 버튼 클릭 시 페이지 오류가 뜸
장고를 이용해 POST 메소드를 사용해서 서버에 요청을 보낼 때는 항상 {% csrf_token %} 이라는 것을 form 안에 명시를 해줘야 함
※ {% csrf_token %} : 장고에서 제공해주는 보안 기능들 중 하나
<!--hello_world.html-->
{% extends 'base.html' %}
{% block content %}
<div style="height: 20rem; background-color: #38df81; border-radius: 1rem; margin: 2rem;">
<h1>
testing
</h1>
<form action="/account/hello_world/" method="post">
{% csrf_token %}
<input type="submit" class="btn btn-primary" value="POST">
</form>
</div>
{% endblock %}
이후 POST 버튼을 눌러도 큰 변화가 없음
우리가 만든 view 단에서 요청을 처리하는 부분에 POST와 GET을 나눠서 처리해줄 다른 알고리즘을 적용하지 않았기 때문
# views.py
from django.http import HttpResponse
from django.shortcuts import render
# Create your views here.
def hello_world(request):
if request.method == "POST":
return render(request, 'accountapp/hello_world.html', context={'text': 'POST METHOD!!'})
else:
return render(request, 'accountapp/hello_world.html', context={'text': 'GET METHOD!!'})
요청 받은 객체 안에서 method를 찾는데 POST 메소드일 경우 기존의 rendering 방식을 쓰는데 그 안에 추가적으로 context라는 데이터 꾸러미 안에 'text'라는 이름을 가지고 있고 내용물은 'POST METHOD!!'라는 문장을 리턴해줄 것
<!--hello_world.html-->
{% extends 'base.html' %}
{% block content %}
<div style="height: 20rem; background-color: #38df81; border-radius: 1rem; margin: 2rem;">
<h1>
testing
</h1>
<form action="/account/hello_world/" method="post">
{% csrf_token %}
<input type="submit" class="btn btn-primary" value="POST">
</form>
<h1>
{{ text }}
</h1>
</div>
{% endblock %}
이것을 html 단으로 보내주기 위해서 hello_world.html 문서에 쌍 중괄호({{) 를 열고 text라고 보내진 이 데이터 이름을 명시해줌
만약 이 text가 존재한다면 장고가 이 부분에다가 아까 작성했던 'POST METHOD!!' 이라는 내용을 적어서 리턴해주게 됨

