URL로 데이터 전송하는 방식으로 URL의 특수 기호와 역할이 있음 (?: 데이터 전송의 시작 / &: 데이터 연결)
?name=kim&age=38&where=suwon (name, age. where 라는 데이터가 GET방식으로 전송)
URL 노출이 되기 때문에 민감한 데이터 전송에는 부적절함 (로그인)
ULR 길이제한이 있기대문에 다량의 정보전송에는 부적절함 (게시판)
GET은 결국 서버에서 데이터를 가져와 보여주는 용도로 서버의 값이나 상태를 바꾸지는 않음
2. 데이터 전송 방식 (POST)
HTTP Body에 데이터를 숨겨서 전송
대형서비스를 지원하기에는 Packet을 까서 정보를 확인해야하기 때문에 리소스를 많이 잡아 먹게 됨
URL에서는 안보이나 크롬 개발자 모드에서 Network > Payload를 보면 정보 확인이 가능 함
POST는 서버의 값이나 상태를 바꾸기 위해 사용 함
3. 데이터 전송 태그 form
method: 어떻게 데이터를 전송할지 지정해주는 속성으로, 지정이 없을 경우 GET방식으로 전송됨. (GET, POST, PUT, DELETE, UPDATE...)
action: 어디로 데이터를 전송할지 지정해주는속성으로, 지정이 없을 경우 현재 페이지에 전송을 함. 예) <form method="POST" action="A"> : A에다가 POST방식으로 데이터를 전송하겠다.
Django 에서는 CSRF(Cross Site RequestForgery) 공격을 감지하기 때문에 csrf_token을 같이 전달(form안에 있어야함) 해줘야 요청으로 인정
form태그 주의 사항으로 form태그 안에 작성된 정보들만 넘어가며, 그 중에서도 name속성을 주지 않은 정보들은 넘어가지 않는다. 아래 코드에서는 subject만 서버로 전달되는데, writer는 name이 지정되지 않았고, content는 form 태그 밖에 있기 때문에 전달 되지 않음.