본문 바로가기

전체 글

(82)
23.04.20 TIL (JSON과 JS objects) 오늘 한 일 DRF 3주차 완료 페어프로그래밍 문제 front end에서 회원가입 기능을 구현하던 도중 백엔드에 3번째 스크린 샷과 같이 데이터를 실어보내자 위와 같은 오류가 발생하였다. 해결: JSON & javascript object 위 코드는 자바스크립트의 객체 자체를 백엔드로 전송하고 있다. JSON은 이름 그대로 자바스크립트 객체의 문법을 이용한 문자기반의 데이터 포맷이다. 그러니까 그냥 JS 객체를 전송한다고 되는 것이 아니라, JSON 형태로 변활할 필요는 있다는 것이다. 이럴 때는 위와같이 JSON.stringify를 이용하여 JSON으로 변환한다. 마찬가지로 JSON으로 받은 데이터를 자바스크립트에서 사용하려면 JS 객체로 바꿔줘야한다. const payload_parse = JSON...
23.04.19 TIL(CORS) 오늘 한 것 DRF 강의 3주차 5강 페어프로그래밍 코테풀이 선발대 강의 수강: Asyncio, 패키지 CORS 오류 강의를 따라하는 도중 프론트엔드(live server)에서 장고 서버에 GET요청을 보내자 브라우저에서 위와같이 오류가 발생한다. 이 오류가 왜 발생하는지 강의에서 간단하게 설명해주시긴 했지만 좀더 자세히 알아보기로 했다. CORS(Cross Origin Resource Sharing)는 말 그대로 '출처'가 다른 리소스의 공유를 제한적으로 허용하기 위한 정책이다. 다른 출처로의 리소스 요청에 대한 정책은 SOP 와 CORS가 존재하는데, 전자는 일부 예외만 빼면 같은 출처에서만 리소스를 공유할 수 있다는 정책이다. 다른 출처의 어플리케이션이 서로 통신하는 것에 대해 아무런 제약도 존재하..
23.04.18 TIL (장고에서 PUT 쓰기) 오늘 한 것 DRF 1강 수강 및 정리(링크) 페어프로그래밍 장고에서 PUT 쓰기 def view(request): if request.method=="PUT": data_a=requset.PUT.get("data_a","") 위와 같이 Django에서 PUT을 POST 처럼 써서 데이터를 뽑아내려하면 아래와 같은 에러를 볼 수 있다. 'WSGIRequest' object has no attribute 'PUT' 시도: 헉 장고에서는 PUT 못쓰나바 그럼 걍 포스트 쓰지 모 delete는 get 쓰고 put은 그냥 post 쓰고 실제 DB동작만 맞추면 되지 ㄹㅇㅋㅋ 그렇게 팀 프로젝트를 마치고서 피드백 시간때 회초리 맞았다(비유적 표현이다). 장고에서 PUT을 처리하지 못하는 어쩌구, DRF도 PUT이 ..
DRF 1강 - HTTP와 웹 동작 방식 0. 프론트와 백엔드의 분리 현재까지는 장고 템플릿을 이용해 프론트와 백의 구분이 모호하게 진행하였다. 템플릿에서 다루는 데이터는 모두 views.py에서 받아오는 데이터였기 때문이다. 서버에 요청을 보낸 뒤 페이지 자체를 새로고침하여 html, css, js등을 모두 다시 렌더링해야하는 불편함이 존재한다. Ajax(비동기 자바스크립트와 XML)의 등장으로 전체를 다시 렌더링할 필요없이 일부만 다시 업데이트 요청할 수 있게되었다. 앵귤러, 리액트 등 프론트에도 이러한 방식과 함께 사용할 수 있는 유용한 도구가 발전하며 점차 프론트와 백의 분리가 일어나게 된다. 그러므로 이제부터 DRF를 이용해 백엔드에서 API와 DB 등을 구성하는 것에 집중한다. 1. 포스트맨 사용해보기 포스트맨을 통해 프론트 구현 없..
A-8조 장고 기초 프로젝트 KPT 회고록 KPT 회고 생성 일시: 2023년 4월 17일 오후 4:17 생성자: changsoo choi 최종 편집 일시: 2023년 4월 17일 오후 9:01 최종 편집자: changsoo choi team Code Hunters - Commpot Commpot 설명 CommPot는 Community Pot의 줄임말입니다. 뉴스피드형의 요리인들을 위한 SNS로, 모두가 어울려(comport) 레시피, 조리도구 추천, 기타 잡담 등의 주제를 올려 자신의 요리 경험과 지식을 공유하는, 다양한 과일을 냄비 한가득 끓인 콤폿(Kompote) 같은 다채롭고 푸근한 공간을 목표로 합니다. KEEP 최창수: PR 발생시 일정시간안에 코드 읽어보기 의무화. 서로의 코드에 대한 이해도를 높이고 코드리뷰를 통해 문제가 발생할 확..
23. 04.17 TIL 오늘 한 것 발표준비 발표 및 피드백 받기 KPT회고 작성 선발대 강의 정리(링크) 장고 기초 프로젝트가 오늘부로 마무리 되었다. API명세와 ERD를 포함한 SA 수정 및 발표 자료를 준비하였다. 새로 만들어진 모델들을 반영하였다. 피드백 정리 발표 후 피드백을 받은 내용을 정리하였다. 테스트 코드, 주석처리한 코드는 배포전에 지워라 코드에 쓸데 없는 군더더기가 남지 않는 것이 좋다. 필드명, app 폴더명, 모델 명등의 이름을 잘 지어주자 한번에 알아볼 수 있는 이름으로 잘 지어주는 것이 좋으며 네이밍 컨벤션에 알맞은 이름을 지어야한다. 백엔드에도 검증(validation)이 필요하다 프론트 엔드에서 적합하지 않은 입력값을 걸러낸다고 해도 백엔드에서도 한번 더 검증을 할 필요가 있다. 왜냐하면 pos..
23.04.10~23.04.14 WIL 한주간 한것: 팀 프로젝트 진행 한주간 팀 프로젝트를 진행하였다. Django를 이용해 뉴스피드 형태의 sns 웹 서비스를 개발하는 것이 주제였다. 팀장으로서 PR리뷰를 하고 팀원들과 함께 충돌과 에러, 여러 문제들을 함께 해결하였다. Django를 이용하여 다음과 같은 기능들을 구현되었다. 1. 로그인/로그아웃/회원가입/탈퇴 2. 글 작성, 수정, 삭제, 조회 3. 프로필 페이지 조회, 수정, 작성자의 글 모아보기 4. 댓글 작성, 조회, 삭제, 수정 5. 글 카테고리 별로 모아보기 6. 사용자 구독, 구독한 사람 글 모아보기 7. 글 검색 기능 8. 프로필 이미지 추가 9. 글 이미지 추가(여러장) 이중 로그인, 탈퇴, 프로필페이지, 글 카테고리별 모아보기, 구독기능, 이미지 추가 기능을 직접 구현하..
23.04.14 TIL(django웹서비스에 image업로드 구현) 오늘 한 것: 팀 프로젝트 기능 구현, 오류 찾고 고치기 1. 프로필 페이지에 이미지 넣기 사용자가 이미지를 업로드 할 수 있는 기능을 만들기로 하였다. 사용자가 올리는 이미지나 파일들은 ImageField, 혹은 FileField에 경로가 저장된다. 여기에는 정확히는 해당 파일/이미지의 경로만이 저장된다. 먼저 Pillow라는 이미지처리 패키지를 설치한다. pip3 install Pillow settings.py에서 다음과 같은 설정을 추가한다. MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 사용자가 올리는 파일들은 media 디렉토리 안에 저장된다. 이를 위해 media 경로를 지정해주는 것이다. 이후 이미지 업로드를 사용할 a..