타임어택과 이를 통해 배운 것 (with 코테)

코변·2022년 6월 3일
0

개발일지

목록 보기
27/41

우선 오늘 타임어택을 진행하면서 내가 다방면으로 성장했다는 사실을 확인할 수 있었다. 우선 일일이 if문을 통해서 확인하는 번거로움을 줄이고자 dict문을 사용해 아래와 같이 switch문처럼 사용하였다.
참조 : geeksforgeeks

또, 세 데이터 중에서 하나의 데이터만 값이 있으므로 데이터가 있는 값만 추리기 위해서 or을 활용해서 없는 데이터를 걸러냈다. python 에서는 None과 실재하는 데이터를 or로 묶어주면 실재하는 데이터만 남기기 때문에 체크박스로 하나의 데이터만 찍어서 보냈을 때 이렇게 그 데이터 하나만을 남길 수가 있다.

def product(request):
    cold_brew = request.POST.get('cold_brew')
    brewed = request.POST.get('brewed')
    espresso = request.POST.get('espresso')
    check = {
        'cold_brew': '콜드 브루 커피',
        'brewed' : '브루드 커피',
        'espresso' : '에스프레소'
    }
    cate_name = cold_brew or brewed or espresso
    category = Category.objects.get(name = check[cate_name])
    drinks = Drink.objects.filter(category= category)
    drink_list = []
    for drink in drinks:
        img_url = ImageModel.objects.get(drink= drink)
        drink_list.append({
            drink.name : img_url.url
        })
    print(drink_list)
    return render(request,'products.html', {'drink_list' : drink_list})

이미지를 가져와서 딕셔너리 형태로 넘겨준 다음 django-template 문법에서 .get 함수를 통해서 딕셔너리 값을 가져오려고 했지만 계속 오류를 뱉었다. 이유는 장고템플릿에서는 .get ['drink'] 와 같이 딕셔너리의 키 값으로 접근하는게 불가능한 듯 했다. 그래서 위와 같이 네임을 키값에 이미지 url을 밸류값에 넣어 .items를 활용해 각 데이터를 활용해 페이지에 보내줄 수 있었다.

{% extends 'base.html' %}

{% block content %}
    {% for drink_dict in drink_list %}
        {% for key, value in drink_dict.items%}
            <div>{{ key }}</div>
            <img src={{ value }}>
        {% endfor %}
    {% endfor %}
{% endblock %}

확실히 어떤 언어든 간에 새롭게 익힐 땐 무엇을 만들어보면 좋은 것 같다. 타임어택, 아침퀴즈 그리고 내가 기획해서 다 만들진 못했지만 미니미니 프로젝트까지 이것저것 만들고 가지고 놀다보니 재밌게 내 능력을 키울 수 있었던 것 같아서 뿌듯하다.

profile
내 것인 줄 알았으나 받은 모든 것이 선물이었다.

0개의 댓글