본문 바로가기
부트캠프TIL, WIL/AI웹개발(스파르타코딩클럽)

[TIL] 2023년 9월 4일 월요일

by 우지uz 2023. 9. 5.

로컬 스토리지 명령어

목표 순공 시간 : 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 몇개 기억도 떠올릴겸 테스트한다고 좀 오래걸려서 
프론트 연결을 못했습니다. 내일 할 예정이에요.