Leta Learns

Planned | 220526 본문

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

Planned | 220526

leta 2022. 5. 26. 21:29

#여행지 확인 페이지에 일자 별로 여행지 띄우기

전날 chk_day 리스트에 여행 일자별로 여행지를 구분해주는 작업을 하였다.

이때 여행일자를 마지막 인덱스([-1])에 넣어주었었는데 장고 템플릿으로 html에 띄울 때는 파이썬 문법처럼 인덱싱을 하니 안 먹히더라.. 어찌보면 당연함. ㅋㅋㅋㅋ

{% for place in chk_day %}
        <h3>{{place[-1]}}일차</h3><br>
{% endfor %}

이렇게 하니 안 먹혔다... 구글링 해보니 장고 템플릿에서 리스트 변수를 인덱싱해서 띄우려면

place.1 이런식으로 해야 한다고 한다. []를 사용해서 인덱싱을 하는 게 아니라 .을 사용해서 하는 것이었다.

https://sinwho.tistory.com/entry/%EC%9E%A5%EA%B3%A0Django-%ED%85%9C%ED%94%8C%EB%A6%BF%EC%97%90%EC%84%9C-%EB%A6%AC%EC%8A%A4%ED%8A%B8-%EB%B3%80%EC%88%98-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0

 

'장고(Django)' 템플릿에서 리스트 변수 사용하기

view에서 넘어온 리스트 변수를 장고 템플릿에서 사용해야 될때가 있습니다 이럴때는 1 {{ var.1 }} cs 위와 같이 변수이름.숫자로 접근할수 있습니다 인덱스는 0부터 시작하니 주의하세요

sinwho.tistory.com

place.-1을 했는데... 안 되더라고.

 

그래서 아예 리스트에서 여행 일자를 2차원 배열인 chk_day의 각 원소의 0번째 인덱스에 넣어주었다.

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 = [[] for _ in range(count_date)]
    for i in places:
        chk_day[i.day-1].append(i) 
    
    #################
    for i in range(len(chk_day)):
        chk_day[i].insert(0, i+1) #이렇게
    #################
    
	return render(
        request,
        "travels/checktravel.html",
        {"travel": travel, "lodging": lodging, "places": places, "chk_day": chk_day},
    )

print(chk_day) 해서 확인해보면 각 리스트의 0번째에 day인 숫자가 들어가 있는 걸 확인할 수 있다.

 

 

이렇게 한 후 checktravel.html에서 place.0을 띄우도록 for문을 작성하였다.

{% for place in chk_day %}
        <h3>{{place.0}}일차</h3><br>
{% endfor %}

 

서버 실행해보면

 

 

여행일자 잘 뜬다.

 

 

 

 

 

 

 

 

 

 

 

 

 

그리고 checktravel.html에서 이제 각 여행일자에 해당하는 여행 장소를 띄워주면 된다.

{% for place in chk_day %}
        <h3>{{place.0}}일차</h3><br>
        {% for p in places %}
            {% if p.day == place.0 %}
                <h4>{{p.name}}</h4><br>
            {% endif %}
        {% endfor %}
{% endfor %}

(위 코드에서 places는 views에서 받아온 여행장소 객체들을 의미한다).

 

이렇게 하면 ~~

정보를 다 띄웠습니다~~~ 신난다.

 

 


 

#경로 확인 페이지에 일자 별로 여행지 띄우기

여행지 확인 페이지에 띄울 때 해주었던 작업들을 경로 확인 페이지에도 적용하였다.

def checkpath에 chk_day 리스트를 만들어서 checkpath.html을 띄울 때 장고 템플릿을 사용해서 해당 데이터를 띄워주었다. 코드는 같으니 생략.

 

 

 

 

#여행지 수정

그리고 수정을 오늘도 시도했는데 말이죠.. ㅎㅎ..

createtravel이랑 비슷한 형식일 것 같아서 비슷하게 해봤는데 안 된다.

내일 해야지...

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

Planned | 220604  (0) 2022.06.04
Planned | 220603  (0) 2022.06.04
Planned | 220525  (0) 2022.05.26
Planned | 220522  (0) 2022.05.22
Planned | 220518  (0) 2022.05.19
Comments