Home TIL 2022.12.04 ~ 12.11
Post
Cancel

TIL 2022.12.04 ~ 12.11

찾으시려는 내용은 ctrl + f or cmd + f 를 이용해 주세요 :)

[TIL/100일차/12.05]bulk_create() 시 유의사항ft. 내배캠

bulk_create() 시 유의사항

이미 정해져있는 인스턴스를 저장해야하기 때문에 Model() 인스턴스를 직접 만들어주어 pk값이 지정되게 한다

기존

1
2
3
4
instance = Goods.objects.create(**validated_data)
image_set = self.context['request'].FILES.getlist('goodsimage_set')
image_list = [{'goods' : instance, 'image' : image}  for image in image_set]
GoodsImage.objects.bulk_create(image_list)

변경 후

1
2
3
4
instance = Goods.objects.create(**validated_data)
image_set = self.context['request'].FILES.getlist('goodsimage_set')
image_list = [GoodsImage(goods = instance, image = image) for image in image_set]
GoodsImage.objects.bulk_create(image_list)

‘dict’ object has no attribute ‘pk’ when using Django bulk_create() function

[TIL/101일차/12.06] CSS/JS 타이머 만들기, Django image validateft. 내배캠

타이머 만들기

1
2
3
<div class="pie-timer" style="box-shadow: 0 2px 5px 0px;">
    <div id="center-timer"></div>
</div>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
.pie-timer {
            position: relative;
            display: inline-block;
            width: 200px;
            height: 200px;
            border-radius: 50%;
            transition: 0.3s;
        }

        #center-timer {
            background: #fff;
            display: block;
            position: absolute;
            top: 50%;
            left: 50%;
            width: 190px;
            height: 190px;
            border-radius: 50%;
            text-align: center;
            line-height: 100px;
            font-size: 20px;
            transform: translate(-50%, -50%);
        }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
async function startTimer(time) {

    let totalSecond = time

    let x = setInterval(function () {
        let min = parseInt(totalSecond / 60)
        let sec = totalSecond % 60
        let perTime = totalSecond / (60 * 20) * 100
        let percolor = perTime <= 10 ? 'red' : ['yellow', 'blue', 'purple'] [parseInt(perTime / 40)] // 테두리 색상 설정

        document.getElementById('center-timer').innerHTML = min + "" + sec + "";
        $('.pie-timer').css({
            "background": "conic-gradient(" + percolor + " 0% " + perTime + "%, #ffffff " + perTime + "% 100%)"
        });
        totalSecond--;

        if (totalSecond < 0) {
            clearInterval(x);
            document.getElementById('center-timer').innerHTML = '종료';
        }
    }, 1000);
}

Django 이미지 확장자 유효성 검사

1
2
3
4
5
from django.core.validators import validate_image_file_extension

class GoodsImage(models.Model):
    goods = models.ForeignKey(Goods, on_delete=models.CASCADE)
    image = models.ImageField(upload_to='goods/',validators=[validate_image_file_extension])
[TIL/102일차/12.07] 프로젝트 프론트엔드 로직 & UI, 백엔드 개인 경고 메시지, 경매 참여 인원 저장 로직ft. 내배캠
  • 오늘 한 일
    • 프로젝트 프론트엔드 로직 & UI
    • 백엔드 개인 경고 메시지
    • 경매 참여 인원 저장 로직
    • 전 기수 취업자 면담
    • 팀원 코드 병합
  • 회고
    • 시중에 내놓았을 때, 사용자들이 편하고 올바르게 사용을 할 수 있게끔. 로직을 세세하게
    • 짜는 것이 재밌지만 전반적인 진행률도 신경을 써야한다.
    • 백엔드에 집중하면 좋긴하지만 프론트엔드를 통해 리프레쉬도 돼서 낫밷이기도 하다.(좀 많이 시간이 걸리는 것은 함정)
    • 힘들지만 재밌다. 배포할 생각에 설레버려 ㅋㅋ 파이팅
[TIL/103일차/12.08] 백엔드 리팩토링 & 회원 프론트 로직 & UIft. 내배캠
  • 오늘 한 일
    • 백엔드 리팩토링 : APIView에서 ViewSet으로 바꿔 코드를 줄임
    • 회원 인증과 관련된 프론트 UI와 로직 구현
[TIL/104일차/12.09] channels ASGI import error, Js confirm true/falseft. 내배캠
  • ASGI import error가 난 경우에는 경로가 확실하고 설정이 잘 된 경우 웹소켓을 다루는 파일에서(consumer.py 등) import한 라이브러리를 잘 확인해 보아야합니다.
1
2
3
4
5
6
7
<script>
    if (!confirm("확인(예) 또는 취소(아니오)를 선택해주세요.")) {
        // 취소(아니오) 버튼 클릭 시 이벤트
    } else {
        // 확인(예) 버튼 클릭 시 이벤트
    }
</script>
[WIL]내일 배움 캠프 15주차ft. 내배캠
  • 회고
    • 마지막 최종 프로젝트를 진행하고 있는게 신기하면서도, 불안, 기쁨, 힘듦 여러가지의 감정이 느껴진다. 백엔드를 더 딥하게 파고 싶지만 프론트 없이 프로젝트를 하다보니 그 부분은 어려운 점은 아쉽지만 캠프가 끝나고도 이력서를 넣으면서 공부할 생각에 뭔가 설레기도 한다. 프로젝트 파이팅!

블로그를 야무지게 채울 생각에 셀렘 가득 ㅎㅋ

This post is licensed under CC BY 4.0 by the author.