Language/Python

Session-TIP-Django 장고 , 개발자에게 좋은 팁

청렴결백한 만능 재주꾼 2020. 5. 17. 15:25
반응형

장고로

회원가입과 로그인, 간단한 글 올리는 기능들을 만들고 피드백을 받는 시간을 그냥 같이 들었다. (내 것은 피드백안받음) 다른사람들이 한 것들 보면서 내 것들을 고치려한다. 들으면서 멘토님의 주옥같은 말들을 정리해서 올릴려고 한다.


내가 안고 갈 좋은 습관들

  • 최대한 묶을 수 있는 class에 많은 메소드를 넣자.

  • 깃 마스터에는 최종형태의 코드를 넣기 때문에 필요없는 주석은 빼야한다.(사용자에게 필요한 주석 빼고)

  • 최대한의 가독성(Readable) 중요.

  • if 뒤에 왠만하면 else는 생략해라!!(그냥 적어도 else로 받아지니까)

  • Import from 적는 것도 순서를 일반 라이브러리 -> 그리고 장고 것 -> 내 것 이렇게 하면 좋다.

  • 검사할 때 models -> views -> urls

  • 장고 queryset api 찾아봐서 쉘에서 실험하는 것이 좋음.

  • 코드를 정리하는 습관(일관성,예)홑따옴표와 쌍따옴표 둘중 하나만 쓴다던지, Indentation), 군더더기 없게 불필요한 공백 줄이기

  • from django.db import IntergrityError를 넣어서 IntergrityError를 잡을 수 있긴 함.

  • HttpResponse 보다JsonResponse가 더 무겁다. 200을 응답할 땐 HttpResponse를 쓰자.

  • except 를 잘해야 하는 게 모든 오류가 묶여서 어떤 오류인지 알 수 없게 됨. 그래서 하나하나 다 잡아주는게 중요.(예-KeyError)

Comment/views.py


try:

    comment.objects.create(
    user_id = comment_info['user_id'],
    user_comment = comment_info['user_comment'],
    )

    return httpResponse(status =200)

except KeyError:
    return JsonResponse({'message':'INVALID_KEY'}, status=400)

def get(self,request):
    comment_data = list(Comment.objects.values())

    try:
        return JsonResponse({'data':comment_data},status=200)

    except Comment.DoesNotExist:
        return JsonResponse({'data':comment_data},status=200)


밑에 get에 try와 except는 트라이 걸 것도 없음

만약 뭔가 건다면,


 if len(comment_data)>0:
    return JsonResponse({'data':comment_data},status=200)

return JsonResponse({'Message':'NO_COMMENTS'}, status=404)

 


그리고

views에


data=json.loads(reques.body)

에서 간과하고 넘어가면 안 될 것이 Body가 없을 경우가 있기 때문에 에러 처리를 잡아야함.



views에 try와 except를 넣어서 post 기능 제대로 잡아야할 듯. 중복된 이메일일 때 어떻게 될지 결정! email 모델에 unique=True를 넣어주고 views 에서 SignUpView post를 걸러주기.

try:
    if Account.objects.filter(email =data['email'].exists()):
        return JsonResponse({"message":"EMAIL_IS_DUPLICATED"}, status=400)

 


SignInView에서

try와 except를 한다.


try:
    data
    if User.objects.filter(email=data['email'].exists():
        if User.objects.get(email=data['email'].password == data['password']:
        return JsonResponse({'message':'SUCCESS'},status=200)
    return JsonResponse({'message':'INVALID_PASSWORD'}, status=401)
return JsonResponse("message":"INVALID_ID_USER"}, status = 401)

except KeyError:


하면 됨

반응형