오늘 한 일
- DRF 1강의 수강 및 정리(링크)
- 페어 프로그래밍
Django에서 PUT 쓰기
def view(request):
if request.method=="PUT":
data_a=requset.PUT.get("data_a","")
위와 같이 Django에서 POST와 같이 PUT을 사용하여 데이터를 추출하려고 하면 다음과 같은 오류가 발생합니다.
‘WSGIRequest’ 객체에 ‘PUT’ 속성이 없습니다.
재판. 도대체 Django에서는 PUT을 사용할 수 없으므로 게시물만 사용할 수는 없습니다.
삭제에는 get을 사용하고 put에는 post를 사용하고 실제 DB 작업과 일치시키십시오.

그렇게 팀 프로젝트를 끝내고 피드백 세션에서 채찍질을 당했다(은유적 표현이다). Django는 PUT blah blah를 처리하지 않습니다. DRF도 PUT blah blah라고 말하거나 정보를 잘못 이해한 것 같습니다. 아니, 사실은 ‘그런 것 같다’가 아니라 머리가 아파서 그만 찾던 게 사실이다. 그래서 다시 찾아봤습니다.
https://haah.kr/2017/05/23/rest-http-method-in-html-form/
REST – HTML 양식에서 GET/POST만 지원되는 이유
연속 목록 REST – 긴 여정의 시작 REST – HTML 양식이 GET/POST만 지원하는 이유 REST – 논문 훑어보기(요약) REST – 당신은 REST를 좋아합니다 REST – Roy가 REST를 엽니다 – 당신이 만든 것은 REST가 아니지만 괜찮습니다 나머지 –
haah.kr
Django에서 PUT을 사용할 수 없다고 생각했지만 사실이 아닙니다. HTML입니다. 양식 태그는 GET 및 POST만 지원합니다.그렇기 때문에 앞에서부터 form 태그로 데이터를 보내든 Postman으로 요청 본문으로 데이터를 보내든 데이터가 제대로 전송되지 않습니다. 사실 form-data 형태로 보내지고 요청 내용을 열어보면 그 어디에도 데이터가 없습니다.
솔루션: 작성 방법
오늘 DRF 강의에서 들은 ‘Content-Type’에 대한 답이 있었습니다. Content-Type 헤더는 문자 그대로 전송된 데이터의 유형을 나타냅니다. 이에 따라 데이터를 받는 쪽에서 데이터를 표현하는 방법을 결정합니다.
form을 이용하여 전송하기 때문에 content-type은 양식 데이터 또는 x-www-form-urlencoded인 경우 Django views.py의 요청에 포함된 QueryDict에 접근하여 데이터를 얻을 수 있습니다. 그리고 POST 및 GET은 이러한 이름의 형식으로 Content-Type을 처리할 수 있으므로 처음에 언급한 방식으로 처리할 수 있습니다.
그러나 PUT과 DELETE는 폼에서 지원하지 않으므로 다른 방법으로 데이터를 전송할 수 있습니다. 하자마자 ‘응용 프로그램/json’오전.
우편 배달부로부터 애플리케이션/json데이터 보내기

위와 같이 body – raw – json 을 선택하여 json 형식으로 데이터를 생성하여 전송합니다. 코드를 보면 Content-Type이 잘 정립되어 있고 본문 데이터도 JSON 형식으로 저장되어 있음을 알 수 있습니다.

참고로 폼으로 저장하면 이런 모양이 됩니다.
전면에 애플리케이션/json데이터 보내기
가져오기 또는 아약스를 사용할 수 있습니다.
fetch(url, {
method: "PUT",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify(data)
})
.then(response => {
// Handle the server response
})
.catch(error => {
// Handle any errors
});
$.ajax({
url: "url",
type: "PUT",
data: JSON.stringify(data),
contentType: "application/json",
success: function(response) {
// Handle the server response
}
});
백엔드에서애플리케이션/json데이터로 받다
req = loads(request.body)
locate = req.get('locate', '')
description = req.get('description', '')
또는 아래 스택 오버플로의 메서드를 사용할 수 있습니다.
Django – PUT/DELETE 요청에 저장된 매개변수는 어디에 있습니까?
새 django 프로젝트에 대해 RESTful 패턴을 따르고 싶습니다. 그리고 PUT/DELETE 요청이 있을 때 매개변수가 어디에 있는지 알고 싶습니다. 내가 아는 한 GET & POST 쿼리만 표시됩니다…
stackoverflow.com
강의 및 문제 해결에서 배운 교훈
웹의 기본 작동이 리콜되었습니다.
양식에서 PUT 및 DELETE를 사용할 수 없음을 발견했습니다.
다양한 헤더의 기능에 대해 새로운 사실을 배웠습니다.
참조
(Django) HTTP 요청 수신 및 응답(GET, POST, PUT, DELETE)
이 게시물은 두 단계로 구성되어 있습니다. 1단계: HTTP Request 잘 수신되는지 확인 + GET 요청에 Dummy JSON 부여 2단계: 실제 HTTP Method 실행하면서 데이터 터치 1단계 Django의 View는
eunjin3786.tistory.com