일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 트랜잭션
- Django
- on_delete
- django westagram
- typescript
- 노드
- JWT
- 실행 컨텍스트
- manytomanyfield
- crud2
- OSI7계층
- 프로미스
- 스코프
- nodeJS
- 호이스팅
- status code
- 자바스크립트
- TypeError: this.boardRepository.createBoard is not a function
- pm2
- bcrypt
- async/await
- 장고초기세팅
- CORS
- node
- rebase
- wecode
- javascript
- docker
- westagram
- Jest
- Today
- Total
목록프로젝트/wecode1차 : TURTLE-HOME (14)
될때까지

🔍 auto_now_add and auto_now class TimeStampeModel(models.Model): created_at = models.DateTimeField(auto_now_add=True) modified_at = models.DateTimeField(auto_now=True) class Meta: abstract = True created_at 생성일시는 DateTimeField의 auto_now_add속성을 True로 적용했고 modified_at 수정일시는 DateTimeField의 auto_now속성을 True로 적용했다. 장고 공식문서를 살펴보면 왜 이 둘을 다르게 적용했는 지 알 수 있다. auto_now는 객체가 저장되는 현재 시간을 저장한다. auto_now_add는 ..
1. AWS 계정 생성하기 2. Application 배포 EC2 서버 생성하기(가상 서버) 지역은 서울 선택 ubuntu 18.04 64bit 선택 t2.micro 선택 보안그룹 설정 키 페어 생성 및 다운로드 인스턴스 시작 .pem파일 권한 변경하기 .pem파일 있는 폴더로 이동하기 ls 명령어 후 .pem파일 여부 확인하기 chmod 400 [pem파일이름.pem] ssh -i [pem파일이름.pem] ubuntu@공인ip(ec2 서버의 IP4 퍼블릭IP) RDS 생성하기(데이터베이스) 파라미터 그룹 설정 데이터 베이스 생성하기 전 파라미터 그룹 설정 파라미터 그룹 패밀리 : mysql5.7 파라미터 그룹 편집 : character_set 검색 후 utf8mb4 사용 : collat 검색 후 col..

프론트 깃허브 : 김수정, 이강철, 손민지 백엔드 깃허브 : 성바울, 전은형 자라홈 시연영상 💗 Django로 프로젝트 하면서 느낀 점 - 올해 초 타학원에서 Flask를 써서 프로젝트를 진행했던 경험이 있다. 그때는 강사님이 프론트를, 수강생들이 백엔드를 맡아서 진행했다. Flask는 최소한의 기능만 내장되어있어서 설치하는 작업이 많았는데 Django는 이미 많은 기능들이 내포되어있어서 그대로 사용만 하면 되는 점이 달랐다. Django는 참 편리하다 느꼈다. 💗 혼자할 때와 팀으로 진행할 때 다른 점 - 혼자 포스트맨이나 httpie로 테스트할 때는 예상했던 응답이 잘 왔다. 하지만 프론트와 협업시에는 서로 작성했던 키값이 달라서 시간을 좀 잡아먹었다. 키값뿐만 아니라 원하는 데이터를 어떻게 주고,..
드디어 완성한 상품 리스트뷰.. 필터와 정렬이 이렇게 어려운 지 몰랐다. API하나 만드는데 시간이 이렇게 오래 걸릴 일인가 현타도 많이왔다. 나는 앞으로 나아가질 못하고 있는데 이미 다른 팀원들은 추가기능까지 도전하고 있고.. ㅜ_ㅜ 누구나 꽃피는 시기는 달라 어제의 나와 비교하자 파이팅!!! 멘탈을 다잡고 이제 완성된 코드를 리팩토링 해보자. class ProductListView(View): def get(self, request): sort_by = request.GET.get('sort_by') size = request.GET.get('size') min_price = request.GET.get('min_price', 0) max_price = request.GET.get('max_price..
이번에는 자라홈의 가격 필터링을 구현했다. size1 = request.GET.get('size') : size에 대한 벨류값을 가져온다. size_list = request.GET.getlist('size') : size에 대한 벨류값을 리스트로 저장한다. /products?size=s&size=m 로 들어오는 경우 size_list에는 ['s', 'm']이 담긴다. /products?size=s,m 로 들어오는 경우에는 size1 = request.GET.get('size').split(',')을 사용해 리스트로 담아야한다. 프론트엔드로부터 min_price와 max_price를 받는다. min_price가 있는 경우 Q를 사용하여(ORM에서 and나 or을 구현할 수 있는 객체) 조건을 더해준다. ..

먼저 사이즈에 대한 필터를 구현해보자. size필터에 대한 값 역시 클라이언트로 부터 받아와야한다. 우리팀은 중복없이 하기로 했기 때문에 getlist가 아닌 get을 사용했다. from django.http import JsonResponse from django.views import View from django.db.models import Min, Q from products.models import Product, SubCategory class ProductListView(View): def get(self, request): sort_by = request.GET.get('sort_by') size = request.GET.get('size') products = Product.object..
어제까지 작성했던 코드는 아래와 같다. class ProductListView(View): def get(self, request): sort_condition = request.GET.get('sort-by') products = Product.objects.all() result = [{ 'id' : product.id, 'name' : product.name, 'image_url': product.image_url, 'prices' : [int(p.price) for p in product.productoption_set.filter(product_id = product.id)] } for product in products] if sort_condition == 'price': result = s..

이제 상품 리스트를 정렬할 차례다. 자라홈에서 정렬은 낮은 가격순 / 높은 가격순 / 최신 등록순이 있다. 1. 최신 등록순 class ProductListView(View): def get(self, request): sorting = request.GET.get('sort-by') # GET은 request를 딕셔너리로 받는다. # get메소드는 해당 키값에 대한 벨류값을 가져오며, 없을 경우 None을 리턴한다. # 정렬은 중복선택 안됨 -> 낮은가격/높은가격/최신에 따른 분기처리 각각하기 # 낮은 가격순 => price if sorting == 'price': pass # 높은 가격순 => -price elif sorting == '-price': pass # 최신 등록순 => -id elif s..

첫번째 시도 이제 상품 전체 리스트를 보여주는 API를 만들 차례다. 자라홈은 상품목록을 보여줄 때, 최저가와 최고가 2가지의 가격이 나타난다. 백엔드에서 프론트로 가격을 최저가, 최고가만 보내줄까 아니면 연결되어있는 모든 옵션에 대한 가격을 다 보내줄까 고민을 했는데 '가격필터'를 적용시키기 위해서는 모든 가격을 다 주는 게 좋을 것 같다는 판단이 들었다. 상품 테이블에는 가격이 없어서 상품옵션테이블과 연결을 해야하는데 내 생각처럼 바로 작동하지 않아서 시간이 좀 걸렸다. 음 갓벽해 하고 서버를 실행시키고 테스트를 했는 데? 응 반가워 500 ^_^ 이상하다 역참조 개념을 사용해서 _set을 사용했으면 ProductOption 테이블에 연결이 되었으니까 테이블의 컬럼 중 하나인 price를 가져올 수 ..

첫번째 시도 클라이언트로부터 product_id를 받는다. 전달된 product_id가 DB에 저장되어있는 Product 객체들의 id와 같은가 조회를 하고 만약 Product객체들 중 일치하는 객체가 없다면 Product.DoesNotExist에러를 만나 except로 처리가 들어간다. 이때 400 을 에러코드로 정했다. 400으로 처리한 이유는 400 Bad Request, 요청자체가 잘못된 접근이다는 판단이 들었다. 하지만 멘토님의 리뷰는 리소스가 없는 경우에는 404 Not Found를 사용한다 하셨다. 듣고보니 맞는 말, 요청한 Product 객체가 존재하지 않음 => 404 Not Found 두번째 시도(with 멘토님) Product.objects.get(id=product_id)로 인해 이..