Leta Learns

Planned | 220518 본문

HUFS/종합설계 (캡스톤디자인)

Planned | 220518

leta 2022. 5. 19. 00:24

#여행지 수정

멋사에서 했던 CRUD 참고해서 여행지 수정 기능을 추가하였다. (update)

views.py 수정하는 과정에서 자꾸 이상한 빨간 줄이 나왔다.

검색해보니 탭과 들여쓰기를 혼용해서 그런 거라고 한다.

노션에 올려두었던 코드를 복붙해서 그런가..

들여쓰기 지우고 탭 했더니 해결됨.

https://wangin9.tistory.com/entry/inconsistent-use-of-tabs-and-spaces-in-indentation

 

inconsistent use of tabs and spaces in indentation 에러 해결

코드에서 들여쓰기도 잘하고 육안으로 볼때 잘못된 부분을 찾을 수 없는데 계속 inconsistent use of tabs and spaces in indentation 에러가 나서 찾아보니,, 들여쓰기에서 탭과 스페이스를 혼용할 경우 나타

wangin9.tistory.com

 

 

 

이것저것 설정해주고 서버에서 여행지 수정 후 저장 버튼을 눌렀는데

이런 에러가 났다. travel 이름은 하나인데 이런 게 왜 나지.

 

 

아래 링크 참고해서 수정하였다.

수정하면서 생각해보니 지난 마라마라빔 팀플 할 때도 이 에러가 나서 

request.POST["name"]을 request.POST.get("name", False) 이런 식으로 바꿔주었던 기억이 있다.

멋사 자료에서는 이게 잘 되는데 왜 플젝을 할 땐 POST.get("~~~", False) 형식으로 해주어야 하지?

이 부분 나중에 좀 찾아봐야 할 것 같다.

http://daplus.net/python-django-multivaluedictkeyerror-%EC%98%A4%EB%A5%98-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%B2%98%EB%A6%AC%ED%95%A9%EB%8B%88%EA%B9%8C/

 

[python] django MultiValueDictKeyError 오류, 어떻게 처리합니까 - 리뷰나라

데이터베이스에 객체를 저장하려고하는데 MultiValueDictKeyError오류가 발생합니다. 문제는 양식 내에 있으며, is_private확인란으로 표시됩니다. 확인란을 선택하지 않으면 아무 것도 전달되지 않습니

daplus.net

 

 

 

이거 수정하고 새로고침했더니 아래의 에러가 발생하였다.

redirect 작성을 잘못했다.

return redirect('travels:checktravel', pk=travel.pk)

우선 이렇게 고치고 실행 해봤다.

 

 

 

포항 여행을

 

 

 

 

 

 

 

 

 

 

 

부산으로 바꾸고 저장을 누르면

 

 

 

 

 

 

 

 

바뀌지 않는다.!

 

 

 

 

 

 

 

 

 

 

 

 

def updatetravel(request, pk):
    travel = get_object_or_404(models.Travel, pk=pk)
    lodging = models.Lodging.objects.get(travel=pk)
    places = []
    for p in models.Place.objects.filter(travel=pk):
        places.append(p)
    if request.method == "POST": #update
        travel.name = request.POST.get("name", False)
        lodging.name = request.POST.get("name", False)
        travel.start_date = request.POST.get("start_date", False)
        travel.end_date = request.POST.get("end_date", False)
        for place in places:
            place.name = request.POST.get("name", False)
        travel.save()
        lodging.save()
        places.save()
        return redirect('travels:checktravel', pk=travel.pk)
    return render(request, 'travels/updatetravel.html', {'travel':travel, 'lodging':lodging, 'places':places})

저장을 안 해줘서 그런가 싶어서 각 모델 별로 .save()를 하였다.

 

어디서 본 적 있는 에러가 남.

 

print(travel.name)을 해봤는데 수정 전에는 포항이 제대로 프린트되는데

if request.method == "POST": 후에는 False가 프린트 되는 것으로 보아
travel.name = request.POST.get("name", False) 이렇게 하는 게 아닌 것 같다.
.save()는 일단 다시 지웠다.

 

{% extends 'base.html' %} 
{% block page_title %}여행지 수정{% endblock page_title %}
{% block content %}
<h1>여행지 수정</h1>
<form action="{%url 'travels:updatetravel' travel.pk %}" method="POST" enctype="multipart/form-data">
    {% csrf_token %}

    <h4>여행 이름: </h4>
        <input type="text" name="travel" value=“{{travel.name}}”>
        <br>

    <button>취소</button>
    <input type="submit" value="저장">
</form>
{% endblock %}

 

이렇게 form 태그에 enctype="multipart/form-data"를 추가해보았는데
화면은 넘어가는데 수정이 되지는 않는다.
프린트하면 아직도 False가 뜬다.
 
왜 false가 뜰까....

 

 

 

다른 방식으로 해봤는데도 안 돼서 일단 넘어가기로 했다.

여행지 수정보다 지도 api 연결하는 작업이 더 중요해서..

그래도 일단 내 레포에 올려놓으려고 했는데, 여기서 git 에러가 났다 ! ^^

ㅋㅋㅋㅋㅋㅋ... 모르겠다. 일단... 코드는 노션에 적어두었으니.. git도 다음에 해야지.. 졸리다...

'HUFS > 종합설계 (캡스톤디자인)' 카테고리의 다른 글

Planned | 220525  (0) 2022.05.26
Planned | 220522  (0) 2022.05.22
Planned | 220517  (0) 2022.05.17
Planned | 220516  (0) 2022.05.16
Planned | 220513  (0) 2022.05.14
Comments