Leta Learns

Planned | 220525 본문

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

Planned | 220525

leta 2022. 5. 26. 01:26

#회원가입 기능 에러 해결

에러까지는 아니고.. 그냥 잘 되던 회원가입이 갑자기 안 됐었다.

확인해보니 프론트 맡으신 분이 이것저것 하시다가 html에서 비밀번호 확인란을 지우셔서 발생한 일이었다.

signup.html에서 비밀번호 확인 창을 다시 띄워주니 해결되었다.

(password1: 비밀번호 확인 object)

<div class="form-group">
	{{form.password1}}
</div>

 

 

#여행지 삭제 기능

delete는 쉽게 구현했다.

view, url, html 파일 만져서 구현 완료. 커밋도 완료.

formset 사용한 place는 반복문 사용해서 개체 하나하나를 delete 해주었다.

def deletetravel(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)
    travel.delete()
    lodging.delete()
    
    for p in places: #이런 식으로
        p.delete()
        
    return redirect("core")

 

수정도 이렇게 하면 할 수 있을 거 같은데.. 왜 안 되냐고요. ㅠ

 

 


 

 

#여행지 수정 기능

자꾸 이런 에러가 났었다.

NoReverseMatch 에러는 많이 해결해본 에러인데 왜 이리 해결이 안 되나 했더니 core.html에서 update.html을 불러올 때 이미 travel.id 값을 가지고 왔는데 update.html의 form에서 action으로 또 travel.id를 가지고 오려 했기 때문이었다.

아래 글 참고하였다.

https://integer-ji.tistory.com/128

 

Reverse for '~~~' with arguments '('',)' not found. 1 pattern(s) tried: ['~~~/~~~/(?P<~~~.id>[0-9]+)$']

[django error] Reverse for '~~~' with arguments '('',)' not found. 1 pattern(s) tried: ['~~~/~~~/(?P<~~~.id>[0-9]+)$'] 해당 오류는 id값을 찾지 못해서이다 def update(request, post_id): p..

integer-ji.tistory.com

 

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

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

        <h4>숙소 이름: </h4>
        <input type="text" name="lodging" value=“{{lodging.name}}”>
        <br>
    <button>취소</button>
    <input type="submit" value="저장">
</form>
{% endblock %}

이 코드를

 

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

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

        <h4>숙소 이름: </h4>
        <input type="text" name="lodging" value=“{{lodging.name}}”>
        <br>
    <button>취소</button>
    <input type="submit" value="저장">
</form>
{% endblock %}

이렇게 바꿔주었다. (4번째 줄 form 태그에서 action 삭제)

 

 

이거 고쳐서 이제 updatetravel 페이지는 잘 뜬다.

 

수정 언제쯤 감을 잡으려나... ㅇㅁㅇ

 

 


 

 

#여행일자에 맞춰 리스트 생성하기

여행을 3일 간다면, 3개의 리스트를 생성하여 여행 장소들을 저장해주어야 한다. 그래야 여행지 확인 페이지에서 띄울 때 용이하기 때문이다.

그래서 def checktravel 함수를 수정중이었다.

 

def checktravel(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)
    count_date = (travel.end_date - travel.start_date).days + 1
    chk_day = [[]]*count_date
    print(chk_day)
    print(places)
    for i in places:
        # if len(chk_day[i.day-1]) == 0:
        print(i.day)
        print(i)
        chk_day[i.day-1].append(i)
        print(chk_day)
    
    return render(
        request,
        "travels/checktravel.html",
        {"travel": travel, "lodging": lodging, "places": places},
    )

지금은 이와 같은 코드이다. (진행중)

데이터들을 확인하기 위해서 print를 하면서 보고 있었다.

근데 chk_day[i.day-1].append(i) 에서 인덱싱이 안 먹히는지 의도한 대로 되지 않는다.

예를 들어, 곰탕집은 3일차 여행지이므로 chk_day[2]에 들어가야 한다. 그런데 모든 인덱스에 다 들어가고 있는 것을 볼 수 있다... 

 

 

해결함!

위 사진 86번 줄에서 chk_day 리스트를 만들 때 빈 리스트를 count_date 개수만큼 곱해주는 방식으로 만들었다.

이렇게 하면 빈 리스트 하나를 네 번 곱한 것이 된다. 그래서 하나의 인덱스에 하나의 개체를 넣으면 그 개체가 결국 네 번 곱해진 게 chk_day라서 전체 인덱스에 다 들어간 것처럼 보이는 것이었다.

chk_day = [[]]*count_date #하나의 빈 리스트를 count_date의 수 만큼 곱한 것

chk_day = [[] for _ in range(count_date)] #빈 리스트를 count_date 개수만큼 만든 것

지금보니 chk_day = [[]]*count_date 코드는 아주 이상하다... [[]*count_date] 이게 더 맞는 것 같기도.. 아닌가.. 어쨌든 틀린 방식이니 넘어간다.

 

chk_day = [[] for _ in range(count_date)] 이렇게 해주면

해당 인덱스에만 잘 들어간다!

 

...음 근데 이걸 어떻게 html에 띄우지 모델을 만들어야 하나.. 뭔가 잘못한 것 같은 느낌이 든다.

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

Planned | 220603  (0) 2022.06.04
Planned | 220526  (0) 2022.05.26
Planned | 220522  (0) 2022.05.22
Planned | 220518  (0) 2022.05.19
Planned | 220517  (0) 2022.05.17
Comments