Django에서 실수 했던 기초적인 것들 : HTML, View return, URL 등

2021. 4. 11. 01:15Issue & Solution

Django와 python에 익숙하지 않아서, 또 HTML 관련해서 헷갈렸던 부분들 정리

url : template에서 url "polls:vote" question.id의 의미

=> polls의 vote url이 아니다! name이 vote라는 url에 parameter에 변수를 넣는 것임. 즉,  name = "vote"이고, url = "<int:question_id>/vote"라면 <int:question_id>에 question.id 값을 넣는다는 뜻임

 

view.py에서

return HttpResponseRedirect(reverse("polls:results", args=(question.id)))

이 요청은 해당 view의 함수가 끝나고, name = results의 변수에 question.id 값을 넣은 url로 리턴한다는 뜻이다.

그러나 이대로 하면 에러난다.

왜냐하면 args는 list타입이어야 한다. 즉 args = (question.id,), 처럼 뒤에 ,를 붙여주던가, 아니면 args = [question.id] 로 써야 한다.

args = (question.id,)

---or---

args = [question.id]

 

form method = "post"

form의 action은 해당 url로 지정한 스크립트를 보내고, input값이 있다면 input의 name과 value를 받아서 전송하는데, HTTP Method를 form의 method에 의해서 요청할 수 있다. method = "post"라면 view에서는  value = request.POST[name]가 될 것이다. 이 때 주의할 점은 request.POST의 값은 항상 문자열이기 때문에, integer값이 필요하다면, int형으로 형변환을 해줘야 할 것이다.