프리온보딩 1주차 TIL (과제 Aimmo Assignment)

유동헌·2021년 11월 2일
1

과제 내용

Aimmo Assignment 과제 내용은 프리온보딩 선발 과제의 연장선으로, 몇 가지 기능들을 추가하는 것이었다.

새롭게 공부한 것

Mongo DB 연결

  • my_settings.py
DATABASES = {
     'default': {
         'ENGINE': 'djongo',
         'NAME': 'TestCluster',
         'CLIENT' : {
             'host' : 'mongodb+srv://test_db:개인비밀번호J@testcluster.vuhev.mongodb.net/myFirstDatabase?retryWrites=true&w=majority',
             'port' : 27017,
             'username' : 'test_db',
             'password' : '개인비밀번호',
             'authSource' : 'admin',
             'authMechanism' : 'SCRAM-SHA-1'
         }
     }
 }
  • 아래 host 값을 CLIENT > host에 적어준다.
mongodb+srv://test_db:<password>@testcluster.vuhev.mongodb.net/myFirstDatabase?retryWrites=true&w=majority
  • 패스워드 포함된 버전
mongodb+srv://test_db:<jDPqUiybRgsMPWgJ>@testcluster.vuhev.mongodb.net/myFirstDatabase?retryWrites=true&w=majority
  • 위 설정 사항 적용 시 필요 모듈

pip install djongo

pip install pymongo

pip install dnspython

  • 오류메세지에 자세하게 나와있었다.

SQLite를 사용했었던 DB를 Mongo DB로 옮겨 사용을 해야했다. 우선 RDBMS 외 NOSQL DB의 사용이 처음이어서 처음 가입부터 연동까지 꽤나 많은 시간을 할애해야겠다. 팀원 한 분이 경험이 있어서 조원 전체를 가이드해 주셨는데, 정말 큰 도움이 되었다!

settings.py에서의 적용이 조금 까다로워 이 부분에 대해 첨부하였고, 세부 내용은 따로 공부하도록 해야겠다.

Swagger 연동

이 부분 역시 postman 사용하다가 처음으로 Swagger를 사용했던 부분이다. (이 부분을 구현하면서도 너무나 큰 도움을 팀원 분께 받았다ㅜ) 또한 처음으로 serializer를 사용했던 부분이기도 하다.

class PostingCreateView(APIView): # APIView 상속
    '''
    # 게시글 작성
    '''

    parameter_token = openapi.Parameter( # openapi, 헤더에 토큰이 있어야 하는 경우, 
        "Authorization", # 데코레이터처럼 사용하면서 serializer에 설정된 manual parameters를 받는다. 
        openapi.IN_HEADER,
        description = "access_token",
        type = openapi.TYPE_STRING
    )
    @swagger_auto_schema(request_body = PostingSerializer, manual_parameters = [parameter_token])
    @login_decorator
    def post(self, request):
        try:
            data = json.loads(request.body)
            user = request.user

            posting      = Posting.objects.create(
                title    = data["title"],
                text     = data["text"],
                category = Category.objects.get(id=data["category"]),
                author   = user,
            )

            return JsonResponse(
                {"message": f"{posting.title} has successfully posted"}, status=201
            )
        except KeyError:
            return JsonResponse({"message": "KEY_ERROR"}, status=400)

위의 코드는 Swagger가 적용된 부분이다. 하루 동안 진행한 거라서 세세하게 파악하지는 못하였고, 프로젝트가 끝나면 다시 공부해 볼 예정이다.

팀웍, 팀 플레이..개인

각자 개인적으로 진행했었던 과제들을 조별로 한데모아 소스 코드를 골라, 그 위에 다음 작업을 진행하였는데 다른 분의 코드여서 흐름을 분석하고 그 위에 빠르게 기능을 추가해야했다. 개인 능력 부족으로 이 부분에 대해 신경을 쓰지 못한 것이 아쉽다. 하지만 이로써 협업의 중요성도 다시 한 번 깨달았다.

아쉬운 점

사실 댓글-대댓글이라는 기능 하나가 완벽히 작동을 하지 않아 많은 시간을 할애했고, 적당히 타협하며 시간을 사용했어야 했는데 그렇지 못했다. 팀원 분께도 죄송할 따름이다..ㅜㅜ 또한 readme 작성, TIL 작성 등 프로젝트의 마무리와 맞물려 끝내야 했던 과제들에 대한 시간 배분도 생각하지 못해 조금 급하게 마무리가 되어 아쉽다. 조금 더 빠르게 배우고, 적용하고, 프리온보딩과의 약속을 지키기 위한 마음가짐이 부족했었던 것 같다. 개발자다운 정신 상태를 유지하고, 실력을 정진해야겠다!

profile
지뢰찾기 개발자

0개의 댓글