장고로
회원가입과 로그인, 간단한 글 올리는 기능들을 만들고 피드백을 받는 시간을 그냥 같이 들었다. (내 것은 피드백안받음) 다른사람들이 한 것들 보면서 내 것들을 고치려한다. 들으면서 멘토님의 주옥같은 말들을 정리해서 올릴려고 한다.
내가 안고 갈 좋은 습관들
-
최대한 묶을 수 있는 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:
하면 됨
'Language > Python' 카테고리의 다른 글
Session-자료구조 Stack & Queue (0) | 2020.05.26 |
---|---|
Session-쉘과 sql, 파이썬 코드로 접근하기(shell , sql, python, django) (0) | 2020.05.19 |
TIL - 셀레니움 (Selenium) 기초!! (0) | 2020.05.16 |
TIL-웹 크롤링(Web Crawling) (0) | 2020.05.13 |
TIL-파이썬 기초 마무리,Linux/Terminal 입문, Git 입문(Python basic, Linux/Terminal basic, Git basic) (0) | 2020.04.28 |