목표 순공 시간 : 6h
실제 순공 시간 : 6h 30m
이날 코드짜면서 직접 테스트하고, 오기가 생겨서 그런지 집중력이 좋았고
새벽에 보충을 하지 않았음.
기분좋게 운동도 다녀옴!
1. 장고 관련 에러해결,
TypeError: Article() got unexpected keyword arguments: 'user'
다음 에러는 Article 이라는 모델에 user arguments가 예측(예상)치 못하게 발생해서 생겼다.
CHAT GPT나 구글링을 활용해보았지만, 원인을 알 수 없었는데
공식문서에서 Class Based View 를 작성할 때, 디폴트값을 비교분석하면서
class ArticleView(APIView):
def post(self, request):
serializer = ArticleCreateSerializer(data=request.data)
if serializer.is_valid():
serializer.save(user=request.user) # 이거 이렇게 해주면, 게시글을 request.user가 작성한 것이 됨
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
serializer.save() 안에 user=request.user 라고 적어두었다는 것을 알 수 있었다.
하지만 나는, user model을 따로 Foreignkey로 받아오지 않고,
유저 없이 게시글을 한번 테스트해보자는 연습의 취지 였기 때문에
serializer.save(user=request.user) 가 아닌, serializer.save()로 설정해줘야 했다.
여기서 공식 문서에 나와있듯 serializer.save() 로 설정해두고, 게시글을 POST 생성하게 된다면
user 모델을 포링키로 받아온다고 한들, 게시글을 작성한 user가 누구인지 저장을 안했기 때문에
user = NULL 값이 된다.
그래서 만약 serializer.save(user=request.user) 로 설정해둔다면,
게시글을 작성한 Article.user 가 request.user가 되어져서, db를 확인하면 유저가 저장되어 있을 것이다.
2. 연습삼아 게시글 작성 및 회원가입, 로그인 해보기
= swagger, postman, 등등 여러방법으로
처음부터 끝까지 연습해보았어요.
(어제부터 시작해서, 중간중간 작은 이슈들 해결하면서 1번의 이슈를 오늘 해결했어요. )
3. 프론트 연결하는거 연습하기
까지 하려고 했는데, 스웨거, 포스트맨, 장고웹페이지, API 몇개 기억도 떠올릴겸 테스트한다고 좀 오래걸려서
프론트 연결을 못했습니다. 내일 할 예정이에요.
'부트캠프TIL, WIL > AI웹개발(스파르타코딩클럽)' 카테고리의 다른 글
[TIL] 2023년 9월 12일 화요일 (0) | 2023.09.13 |
---|---|
[TIL] 2023년 9월 6일 수요일 (0) | 2023.09.07 |
[TIL] 2023년 8월 31일 목요일 (0) | 2023.08.31 |
[TIL] 2023년 8월 29일 화요일 (0) | 2023.08.31 |
[TIL] 2023년 8월 28일 월요일 (0) | 2023.08.29 |