Aimmo Assignment 과제 내용은 프리온보딩 선발 과제의 연장선으로, 몇 가지 기능들을 추가하는 것이었다.
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'
}
}
}
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에서의 적용이 조금 까다로워 이 부분에 대해 첨부하였고, 세부 내용은 따로 공부하도록 해야겠다.
이 부분 역시 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 작성 등 프로젝트의 마무리와 맞물려 끝내야 했던 과제들에 대한 시간 배분도 생각하지 못해 조금 급하게 마무리가 되어 아쉽다. 조금 더 빠르게 배우고, 적용하고, 프리온보딩과의 약속을 지키기 위한 마음가짐이 부족했었던 것 같다. 개발자다운 정신 상태를 유지하고, 실력을 정진해야겠다!