오늘의 학습 계획
_새로운 팀프로젝트가 시작됐다!
이번 프로젝트 주제는 django REST framework를 활용한 커뮤니티 사이트 만들기!
우리팀은"잠" 에대해 사람들과 이야기를 나누는 커뮤니티를 만들어보려고 한다.
기록하고 싶은 학습내용
_ 우선 오전 9시에 발제를 받고, 팀원들과 함께 S.A문서를 작성했다.
먼저 프로젝트를 위해 어떤 컨텐츠를 다룰지 팀원들과 상의했는데, 우리 넷 모두 관심이 있는 분야를 고르면 좋을 것 같아서 머리를 맞댔다. 브레인 스토밍의 결론은 '잠자기'. 우리 넷 모두 잠 자는 것에 대해 관심이 많다는 조금은 독특한 결론이 나왔다. 그래서 그대로 진행해보기로했다.
우리가 만들 커뮤니티는 "잠"에 대한 이야기를 나누는 커뮤니티!
잠이란 것이 참 웃긴게, 잠을 잘 자고 싶은 사람, 수험생처럼 잠을 안자고 싶은 사람, 또는 잠을 자다가 깨버리거나 수면무호흡증 등 수면장애를 겪는 사람들이 많다는 것이다.
이런 것들로 크게 세 가지 카테고리를 나누어 게시판을 운영해보기로 했다.
아래는 우리 조가 다함께 만든 와이어프레임 ㅎㅎ
우리는 백엔드 프로그래머들이므로 ㅋㅋㅋㅋㅋ
이대로 프론트엔드를 만들 수 있을지는 모르겠지만 ㅋㅋㅋㅋ
일단 이런 기능과 API 구성으로 해보려고 한다.
다음은 ERD
_내가 맡은 부분은
3가지 게시판의 게시글 피드, 각 게시글의 상세페이지 , 새로운 게시글 작성 기능 이다.
진행 계획은
1.먼저 강의를 보면서 drf로 게시글 CRUD 하는 방법을 배울 것
2.학습 후, 앱을 하나 만들어서 임의의 어떤 게시글 작성하기 코드를 만든다.
이 때 게시글의 CRUD를 구현하는데, models.py 와 views.py를 작성.
models.py 작성 시, ERD 참고하여 데이터 구조를 짠다.
views.py 작성 시 request에서 boardtype을 받은대로, 해당하는 DB 컬럼에 게시글이 작성되는 코드를 짜야한다.
시작!
먼저 창호튜터님의 지난번 강의 영상을 한 번 봐야겠다. 그 때 투두리스트 프로젝트에서 todo 부분을 구현하는 게 있었는데, 그 부분을 본 뒤에, 할 수 있으면 하고, 스파르타 drf심화 강의에서도 articles 같은 걸로 만들어졌던 부분을 참조해야겠다리.
1. 이창호 튜터님 강의 보며 엑기스 추리기
#
그런데, 팀 API명세를 보니
headers:{ content-Type :json, bearer accesstoken }, method:POST, body:{ title, content, image, boardtype }
|
요론게 있는데, 내가 직접 헤더랑 바디랑 설정해가지구 요청을 보내는 부분이 있나보다. 아직 모르는 부분이라서 강의 들으면서 중점적으로 노려봐야겠다.
근데!!!!!!!!!!! 창호 튜터님 todo 강의를 보는 것보다,
drf심화 강의 때 4-3강이 게시글의 모델 설계 인데, 이 부분을 듣는게 더 연관성이 있는 것 같아서 작전변경 ㅋㅋㅋ
4-2강 부터 봐야겠다. 헤헤 수고.
매우좋군!
startapp 해서 게시판용 앱을 만들었고
루트프로젝트 urls.py에서 include해서 앱의 urls.py와 연동했고
앱의 views.py에서 게시글과 게시글 상세보기의 CRUD 하는 Class Based View 의사코드 작성했고
앱 urls.py에서 CBV 들에게 들어가는 path 정해줬고
이제 boards 앱에서 models.py 구현! 유저(정참조할 fk), 타이틀, 컨텐트, 이미지필드, 작성일, 수정일 넣었고.
이미지 필드 넣었으니 부가적인 것들 챙겨준다.
**static file이란? 사용자의 요청에 따라 내용이 바뀌는 것이 아니라, 요청한 것을그대로 내어주면 되는 파일이다. 이미지, CSS, JavaScript 같은 것들. 말이다.
오늘 만난 어려움
문제:
_팀원이랑 역할 나눠서 개발하다가,, 내가 Foreign key로 참조해야 하는 데이터가 팀원의 미완성 데이터일 때 어떻게 해야할까? 코드를 써놓고 runserver 했다가 이런 에러를 만났다.
User라는 테이블을 포린키로 참조하는데, 참조할 게 없어서 발생한 에러다.
요런식으로 말이다. 위에 노란곡선이 쳐진 User부분이 의존성이 있는 코드. 유저앱도 안만들었으니 class User가 없고, 그러니 에러가 뜰 수 밖에 없다.
시도:
그럼 어떻게해야할까? 개발자들은 협업이 많으니 평소 이런 경우가 자주 있을텐데 다른분들은 어떻게 하고 계시는지,
동우매니저님께 여쭤보았다.
방법은 여러가지.
1. 내가 class User 모델을 대충 더미데이터로 만들어서 사용한다.
2. 저 ForeignKey 부분을 주석처리하고 돌린다.
3. user = models.IntegerField()로 만들어서 그냥 돌린다. 굳이 인티져필드로 하는 이유는, 어차피 pk가 들어올 자리인데 pk도 숫자로 들어오므로 그냥 비슷한 친구로 두는 것. Bigint를 사용하여 실제로 숫자를 매겨서 이리저리 돌려볼수도 있으나 지금 작업에서는 그냥 비워두는 의미로 IntegerField로 하면 적절하다.
1번은 users앱까지 만들어야해서 너무 귀찮고
2번은 views에서 만들다가 여러 단계중 실수로 빼먹을까봐 걱정되고
3번이 적절하다고 생각되었다.
해결:
3번 방법대로 하기로 했다. IntegerField로 돌려보았다.
자알~ 돌아간다 후후
알게된점:
어떤 작업들은 검색보다 선배님들의 조언이 더 효율적일 때가 있다. 어떤 컨벤션에 관한 내용이라던지, 개발자들 사이의 암묵적인 룰, 또는 자주 발생할만한 휴먼에러들이 그것이다. 사람들이 작고 사소한 것은 굳이 블로그에 포스팅하지 않는 경향이 있는데, 그런 것은 경험자들을 만나 조언을 구하면 빨리 알 수 있는 것 같다.
그리고 협업할 때 추가!
이런식으로 개발단계에서 임시로 지나갔던 것들을 모두 배포용에 맞게 돌려놓아야한다.
사람 머리로 생각하면 까먹을 수 있으니까, 나중에 한번에 챙길 수 있게 미리미리 메모메모.
작은 질문과 해결
Q. 간단히 모델스에 초이스 구현하고 슈퍼유저 만들고 들어가려는데 오잉?
> 초이스 구현해놓고 마이그레이션 안해서 그런가? 해보았다.
> makemigrations를 했더니 또 이런 에러가 뜨네?
choice 구현한 곳에서 default 값을 꼭 정해줘야 하나보다.
음... 인간의 언어로 내가 원하는 것을 말하자면, 난
이거 세가지 중에서 사용자가 아무것도 입력하지 않으면 게시글 작성이 안되게끔하고 싶다. 어떻게 해야하지?
내일 튜터님께 여쭤봐야겠다.
'About coding > Today I learned' 카테고리의 다른 글
2023년 05월 10일 TIL [#drf foreignkey 사용하여 앱 간 데이터 공유] (0) | 2023.05.10 |
---|---|
2023년 05월 9일 TIL [#drf 게시글 만들기 CRUD #Choice #error메시지 커스텀] (0) | 2023.05.10 |
2023년 05월 3일 TIL [#AWS #DRF] (0) | 2023.05.03 |
2023년 05월 2일 TIL [#AWS 회원가입 #AWS 리젼 #AWS 콘솔] (0) | 2023.05.03 |
2023년 05월 1일 TIL [#AWS 결제수단 변경] (0) | 2023.05.02 |