TIL(36일차)

김규현·2022년 10월 24일
0

오늘은 django를 복습하던 중 views.py에서 게시물 삭제 기능을 수행하는 함수를 구현하고, url 설정 및 html에서 삭제 버튼을 눌렀을 때 설정된 url로 이동할 수 있도록 처리 하다가 에러가 발생했다.

처음에 에러가 떴을 때는 가장 상단의 메세지만 읽고 community 앱의 views.py에 있는 삭제 함수에서 에러가 난 줄 알고 에러가 있는 코드를 찾고 있었는데 도저히 찾을 수가 없었고, 구글링을 해봐도 내가 딱 원하는 검색 결과가 노출되지 않아서 답답했다.

코드를 보다 보니 views.py에서 urls.py도 들여다 보고, html 까지 와서 삭제 버튼을 감싸는 태그까지 들여다 보면서 a태그를 유심히 보다 동작원리를 생각해보니 a태그는 페이지를 이동 시켜주는 역할인데 request가 GET 일 수 밖에 없었다. 그러나 게시글을 삭제하는 것이기 때문에 POST 요청으로 접근을 해야하고 a태그를 사용하는 것이 아니라 form 태그를 사용해야 한다는 생각이 딱 떠올라 form으로 method와 url을 설정해서 새로고침 했더니 역시나 a태그가 문제였다.

html에서 버튼을 만들어 버튼이 수행할 기능을 만들 때 a태그를 사용해야 할 지, form 태그를 사용할 지 조금 헷갈렸었는데 가장 먼저 생각해야 할 것은 GET 요청을 할 지, POST 요청을 할 지 판단해서 url을 설정할 때 적재적소에 맞게 a태그와 form 태그를 사용해야 할 것 같다.

(추가)
이전 작업 내역은 다른 브랜치로 모두 커밋한 상태이고, comment 브랜치를 생성하고 모델을 만든 다음 migration 하려고 하는데 db의 models에 model이 없다는 에러가 발생함

모델 필드 중 같은 파일 내 바로 위 Article에서 참조한 모델 필드가 있고, Article 모델로 작업한 브랜치는 다른 브랜치이고 해당 브랜치가 migrate한 django db의 models를 못가져오는 건가 싶었다.

구글링하다가 Stackoverflow에서 버거형이 남긴 댓글을 보는데 너무 어이가 없었다.

그렇다.. 오타였다. django의 model을 models.model로 상속 받아 사용하는건데 뒤에 model의 m을 대문자로 썼어야 했다.

당연히 코드를 외우고 다니는 것이 아니기 때문에 발생할 수 있는 에러이지만 오타 때문에 삽질한 시간이 길어져서 현타가 왔다. 일단 다니엘 로스만 형님한테 감사하며 에러를 해결할 수 있었고, 앞으로는 오타를 주의하고, 삽질을 최소화 할 수 있도록 에러 메세지도 잘 확인 해야겠다.

profile
웹개발 회고록

0개의 댓글