일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- manytomanyfield
- bcrypt
- 장고초기세팅
- wecode
- 실행 컨텍스트
- typescript
- async/await
- 호이스팅
- CORS
- westagram
- JWT
- status code
- rebase
- django westagram
- 자바스크립트
- crud2
- 프로미스
- Jest
- on_delete
- pm2
- 노드
- nodeJS
- OSI7계층
- 트랜잭션
- node
- Django
- javascript
- 스코프
- docker
- TypeError: this.boardRepository.createBoard is not a function
- Today
- Total
목록프로젝트 (92)
될때까지
먼저 사이즈에 대한 필터를 구현해보자. 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)로 인해 이..
첫번째 시도 사용자로부터 category_id를 전달받는다. SubCategory 객체들 중에서 category_id가 일치하는 객체를 찾는다. get()은 객체로 반환하고, 객체가 존재하지 않는 경우에 따른 객체.DoesNotExist에러를 일으킨다. filter()는 쿼리셋에 담아 반환하기 때문에 데이터가 비어있으면 빈 쿼리셋을 반환한다. 그래서 비어있을 때(없을 때)에 대해 핸들링 해야한다. SubCategory중 category_id가 일치하는 객체가 존재한다면, 해당 객체의 정보들을 담아 json형식으로 보내주면 된다. # Create your views here. from django.http import JsonResponse from django.views import View from p..
이제까지는 데이터를 넣을 때 post메소드를 생성하고 그 메소드를 사용해서 작업했다. 하지만 오늘은 데이터를 CSV파일로 만들고, 이를 mysql데이터베이스에 적용시키는 방법으로 데이터를 집어넣었다. CSV는 Comma Seperated Value 데이터로, 쉼표를 기준으로 항목을 구분하여 저장하는 데이터를 말한다. 컴마로 구분되어 있기 때문에 테이블 형태로 구성된 자료나 텍스트 자료를 저장할 때 주로 사용된다고 한다. 적용 방법은 다른 블로그가 더 자세하니까 생략 :) 맨 처음 상품관련 CSV를 만들 때, 하나의 테이블에 모든 정보를 다 넣었다. 이렇게 만든 이유가 무엇이냐고 물어본다면.. 글쎄요 하나의 테이블에 다 집어넣어서 뽑아올 수 있을거라 생각했다고나 할까? 솔직히 말하면 아무 생각이 없었다. ..
from django.db import models # 대카테고리 class LargeCategory(models.Model): name = models.CharField(max_length=50) class Meta: db_table = 'large_categories' # 중카테고리 class MiddleCategory(models.Model): name = models.CharField(max_length=50) large_category = models.ForeignKey('LargeCategory', on_delete=models.CASCADE) class Meta: db_table = 'middle_categories' # 소카테고리 class SmallCategory(models.Model)..
지난주에 위코드에서 프로젝트로 진행하고 싶은 사이트를 골라 발표하는 시간이 있었다. 너무 늦게 사이트를 찾은 바람에 이미 하고 싶었던 사이트들은 다른 분들이 찜해두셨던 상황..!! 그래, 1차 프로젝트를 포기하고 2차를 노리자 싶어서 발표했던 까사리빙. 딱 봤을 때 메인 화면부터 프론트의 현란한 애니메이션(?), 많아보이는 카테고리와 상품들 및 필터 기능. 1차로 도저히 못할 것 같았는데 1차 프로젝트 적합 사이트에 이름이 올라갔다. 오마이갓 그리고 나서 동기들이 각자 진행하고 싶지 않은 사이트를 총 8갠가? 투표했다. 나는 내 사이트를 투표했다. 2차로 진행하고 싶었기 때문에...!! 그래서 내가 투표한 사이트는 당연히 떨어질 줄 알았는데 진행 사이트에 올라갔고...? 내 사이트 팀원들도 있지만 정작 ..
Git이란? VCS 버전 관리 시스템, 프로젝트의 버전과리를 도와주는 프로그램 코드 버전관리를 하는 이유는? 수정할때마다 파일을 새로 만들면 관리가 힘들다. 언제든 이전 버전의 코드로 돌아갈 수 있다. 이력을 남기기 위해서 사용한다. 하나의 프로젝트를 여러명의 개발자가 협업할 수 있다. Github란? 깃을 이용해 버전관리를 한 프로젝트들을 관리해주는 저장소이자 개발자들의 소셜 네트워크다. 연습해보기!!! Desktop에 오늘 날짜로 폴더를 만든다. 1.md파일을 생성하고 그 안에 현재날짜와 시간을 작성한다. cd Desktop mkdir 20220629 cd 20220629 touch 1.md vi 1.md 1.md파일을 생성하고 그 안에 현재날짜와 시간을 쓴다 깃 시작하기 git init 깃 상태확인..