localhost:8000/question/1 이렇게 생긴 URL을 만들고 싶다면 urlpattern을 아래처럼 추가하고 (참고로 앱이름 question입니다) APIView를 아래와 같이 작성하면 된다. 만약 쿼리스트링을 받고 싶다면 어떻게 해야할까?!?! 그러니까 이런 url을 제공하고 싶은 것이다!! localhost:8000/family_question/answer?question_id=1 url패턴은 기존처럼 유지하고 (참고로 스샷의 앱이름 family_question입니다) APIView에서 request.GET[''키값'] 으로 쿼리스트링의 value를 꺼내오면 된다. 잘됨 ☺️ [추가] 그리고 저는 특정 쿼리스트링이 있는지를 명시적으로 확인하고 없으면 더 이상 진행안하고 에러보내주도록 처리..
API 만들때 에러 메세지 정책을 어떻게 해주는 게 좋을까?! 를 많이 고민했습니다. (장고로 API 개발 + 플러터로 클라이언트 개발을 동시에 하고 있어가지구 이 정책에 따라 클라도 같이 바꿔해서,,,😶) 그래서 고민한 것들을 기록해두려고 합니다. 우선 크게보면 사용자가 얼럿으로 만나게 되는 에러메세지를 서버에서 결정할 것인지, 클라이언트에서 결정할 것인지 정해야하는 문제인데요 더 구체적으로 생각해보면 후보1) 서버: api에서 status code만 내려준다. 클라: api에서 내려주는 status code를 보고 클라이언트에서 에러메시지를 매핑한다. 후보 2) 서버: api에서 status code 뿐만아니라 개발자가 이해할 수 있는 에러메세지를 내려준다. (예를들어, header값이 올바르지 않습..
[1] Custom Exception Handling 이란 Custom exception handling 이란 API의 에러 응답(error response) 스타일을 내맘대로 핸들링할 수 있는 것을 말합니다. 현재 장고는 아래와 같은 스타일의 에러응답을 내려주도록 되어있는데요 { "detail": 장고의 에러메세지 } 에러 응답에 status_code 필드를 추가하는 등 에러 응답 스타일을 커스터마이징하고 싶은 니즈가 있을 수 있습니다-!! 이럴때 취할 수 있는 방법이 custom exception handler 만들기 입니다-!! [2] Custom Exception Handler 만들기 우선 저는 플젝에 utils라는 파일을 하나 만들었구요 문서에 있는 코드를 복붙해서 넣었습니다. from rest..
[DRF] 모델과 ModelSerializer 만들기 에서 모델을 JSON으로 쉽게 바꿀 수 있도록 해주는 ModelSerializer를 알아봤는데요, 만약- 모델에 없는 필드인데 JSON에 특정 필드를 추가해서 내려주고 싶거나 - 모델에 있는 값을 변경해서 JSON으로 내려주고 싶거나 (예를 들어 모델에는 fullName 필드가 있는데 JSON은 firtsName으로 내려주고 싶다던가) 할때는 어떻게 해야할까요?! SerializerMethodField 를 사용하면 됩니다. 이 필드에는 method_name을 지정해줄 수 있는데요, 안지정해주면 get_필드네임 메소드를 부른다라고 적혀있네요 예를들어 이렇게 생긴 Profile 모델이 있다고 할때 JSON으로 nickname 필드를 내려주고 test라는 ..
rest_framework에 있는 기본 exception과 APIException에 대해서 알아보겠습니다. [1] Exception 처리해야하는 이유 저의 SignupView는 이렇게 되어있는데요 아무 exception도 처리안해준 상태입니다. class SignupView(APIView): def post(self, request): unique_string = get_random_string(length=10) temporary_family_code = models.TemporaryFamilyCode(code=unique_string) user = User.objects.create_user(username=request.data['id'], password=request.data['password'..
[1] DRF가 지원해주는 Authentication 종류 Django Rest Framework - Authentication 을 보면 이렇게 네가지의 Authentication을 지원해주고 있습니다. Basic은 username이랑 password로 인증하는데 테스트에서만 적절하다라고 나와있고 Token은 token으로 인증하는데, 클라이언트 - 서버 setup에 적절하다고 하고 (저는 이거 쓰겠습니다..!) Session은 AJAX client(뭔지모름ㅠㅠ)에게 적절하다고 하고 Remote는 무슨 말인지 모르겠어요ㅠㅠ [2] TokenAuthentication 설치하기 이미 rest_framework 패키지를 설치했으니까 settigs.py에 가서 앱만 추가해주면 됩니다. 그리고 아래 명령어를 해줍..
[1] Heroku에 필요한 패키지 설치 해당 프로젝트에 들어가서 필요한 패키지들을 설치해줍니다. pip install dj-database-url psycopg2-binary gunicorn whitenoise dj-database-url과 psycopg2-binary은 헤로쿠에서 사용하는 DB인 postgresql을 위한 패키지, gunicorn은 배포하기위해 필요한 패키지, whitenoise는 정적파일의 사용을 돕는 미들웨어 라고 합니다. [2] requirements 파일 만들기 설치가 끝나면 아래 명령어로 requirements 파일을 만들어줍니다. (플젝에서 쓰는 패키지 리스트가 담긴 파일이에요-!) pip freeze > requirements.txt 프로젝트에 보면 해당 파일이 생겨있답니..
이제 본격적으로 DB를 구성하고 API를 만들기 위해서 ERD를 그려주겠습니다. 아래 사이트를 이용할게요-! http://aquerytool.com/ AQueryTool - AQuery.Web {{source.erd_info.erd_name + '(' + source.erd_info.db_type + ')'}} aquerytool.com 데모페이지에 들어가서 (aquerytool.com/?demo=y) 예제를 보고 이것을 reference해서 ERD를 그려줄게요-!! (대학교 3학년때 했던건데,,,다 까먹,,,) aquerytool.com/help/index/ 여기 help에도 친절한 설명이 있습니다 (🥺) [1] AQueryTool 을 써보자 우선 로그인을 해주시고 컨트롤 + 마우스 클릭 해서 테이블만..
[1] 문제 pythonanywhere 배포 후, admin으로 접속하면 화면이 이렇게 나온다. 원래 admin 페이지가 이렇게 나와야하는데 CSS가 안먹었다. [2] 원인 크롬 > 개발자 도구로 들어가보면,,콘솔에 시뻘건 에러들이 뜨고 있다. 근데 나의 프로젝트에는 static 이라는 폴더가 없는데 여기서 css파일을 찾으려고 하는 점을 유의해서 봐야한다...!! 장고의 static files 문서를 보면 개발환경(settings.py의 DEBUG를 True로 해놨을때) 에서만자동으로 static files (static files는 CSS, JavaScript, Images를 말함) 를 찾게 해준 것이라고 한다. 로컬 서버로 돌릴때도DEBUG = False 로 설정하고 admin 페이지에 접속하면 C..
[DRF] get 요청받는 API 만들기 (2) 에서 만든 API를 배포해보겠습니다..! pythonanywhere 에 들어가서 Beginner account를 만들어줍니다 (무료 ♥️) (Beginner 계정으로 배포한 건 3개월만 접속가능합니다) Deploying an existing Django project on PythonAnywhere 문서를 따라해봅시다-!! [1] Uploading your code to PythonAnywhere 계정만들고 로그인하면 이 화면이 나오는데요 여기서 Console 탭을 누르고 bash를 눌러주세요 그러면 이런 bash console이 뜨게 됩니다. git clone https://github.com/eunjin3786/onion_family_api 깃에 올린 ..
- Total
- Today
- Yesterday
- cocoapod
- 플러터 얼럿
- Sketch 누끼
- METAL
- flutter dynamic link
- 플러터 싱글톤
- ipad multitasking
- Dart Factory
- ribs
- flutter deep link
- Flutter Clipboard
- Python Type Hint
- Django FCM
- Flutter Spacer
- github actions
- flutter 앱 출시
- Flutter Text Gradient
- flutter build mode
- PencilKit
- Flutter getter setter
- Flutter 로딩
- 장고 URL querystring
- drf custom error
- Watch App for iOS App vs Watch App
- 장고 Custom Management Command
- Django Firebase Cloud Messaging
- 구글 Geocoding API
- DRF APIException
- Django Heroku Scheduler
- SerializerMethodField
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |