일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- nodeJS
- 장고초기세팅
- TypeError: this.boardRepository.createBoard is not a function
- pm2
- rebase
- typescript
- django westagram
- 트랜잭션
- on_delete
- 프로미스
- node
- 자바스크립트
- westagram
- bcrypt
- status code
- CORS
- 실행 컨텍스트
- 노드
- Django
- async/await
- 스코프
- manytomanyfield
- javascript
- JWT
- Jest
- OSI7계층
- crud2
- 호이스팅
- wecode
- docker
- Today
- Total
목록전체 글 (190)
될때까지
이제 상품 리스트를 정렬할 차례다. 자라홈에서 정렬은 낮은 가격순 / 높은 가격순 / 최신 등록순이 있다. 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..
.gitignore에 나중에 추가한 파일이 추적될 때 .gitignore에 csv파일과 db_loaders.py을 추가했다. 그리고 깃허브에 pull request를 요청했는데 깃허브에 올라가있는 csv파일과 db_loaders.py!?!? 깃이그노어에 작성한 파일들 중 일부분이 적용이 안되고 있다. 이럴 경우에는 아래의 명렁어를 사용해서 깃 캐시를 삭제해주면 해결된다. git rm -r --cached filename1, filename2.. 그러면 해당 파일들의 git index가 초기화 되었다. 해당 내용을 add commit해준다. 제대로 잘 적용이 되었나 추적을 끊을 파일을 테스트삼아 수정해보면 된다. 수정한 내용을 저장한 뒤에 git status로 확인해봤을 때, 변경사항이 없다고 나타나면 ...
이제까지는 데이터를 넣을 때 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차로 진행하고 싶었기 때문에...!! 그래서 내가 투표한 사이트는 당연히 떨어질 줄 알았는데 진행 사이트에 올라갔고...? 내 사이트 팀원들도 있지만 정작 ..
외우자!!! HTTP 에러코드 에러메시지 에러 뜻 200 OK 에러없이 성공! 201 Created 생성 성공 (POST) 예 - 회원가입, 게시글 등록 400 Bad Request 우리가 의도한 에러를 일으켰다 Key값이 안들어온 경우 예 - 이메일, 비밀번호 들어와야하는데 이메일만 들어온 경우 예 - 이메일이 중복되는 경우 예 - 비밀번호가 영대소문자+숫자+특수문자 아닌 경우 401 Unauthorized 권한이 없다 예 - 비밀번호가 DB와 일치하지 않는 경우 403 Forbidden 메소드가 안맞은 경우. 예 - POST 인데 GET으로 올 때 404 Not Found 엔드포인트가 잘못되었다. 요청한 페이지가 없는 경우 예 - url까진 연결이 되었는데 그 뒤 주소가 틀렸다 500 Interna..
1. 인증(Authentication) 유저의 아이디와 비밀번호를 확인하여 로그인에 성공시키는 경우처럼, 사용자의 신원을 확인하는 절차를 말한다. 1-1. 로그인 절차 회원가입을 할 때 사용자가 ID와 PW를 입력한다. 사용자가 입력한 PW는 암호화해서 DB에 저장한다. 사용자는 로그인할 때 ID와 PW를 입력한다. 이때 사용자가 입력한 PW를 다시 암호화한 뒤, 암호화되어서 DB에 저장되어있는 PW와 비교를 한다. 일치하면 로그인 성공으로 사용자에게 토큰을 발급해준다. 로그인에 성공한 이후부터는 나 인증된 사용자야 라는 것을 알리기 위해 request를 날릴 때 토큰을 첨부하여 서버에 같이 전송한다. 1-2. 유저 비밀번호 암호화 유저의 비밀번호는 꼭 암호화해서 DB에 저장해야하는데 단방향 해쉬함수가 ..