소개
파이썬과 장고에 진심인 소프트웨어 개발자
파이썬/장고 질답 및 교육서비스, 파이썬 사랑방 주인장
파이썬 사랑방 with Django/React 커뮤니티 (구. Ask Django) 운영자
(전) Microsoft Azure MVP 어워드 수상 (2016년~2022년)
대외 활동
오프라인 교육 : SK텔링크, LS그룹, 삼성 디스플레이, 부산대학교 정보화본부, 서울대학교 벤처경영학연합전공, 패스트캠퍼스 웹서비스 개발 캠프 3기 등
기술 자문 : 유클리드소프트, 부산대학교, 한국산업기술평가관리원, 한국방송통신전파진흥원 등
여러분의 파이썬/장고/리액트 페이스메이커가 되겠습니다. 😉
강의
수강평
- 장고 설계철학으로 시작하는 파이썬 장고 입문
- 파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)
- 파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)
- 파이썬/장고로 결제 시작하기 (Feat. 아임포트) - 기본편
게시글
질문&답변
13-17 ModelViewSet pytest 오류
방금 장고 pytest 테스트를 디버깅 시연을 촬영해봤습니다. 테스트 과정을 이해하시는 데에 도움이 되셨으면 합니다. ;-)https://youtu.be/j0SGx9C_11A
- 0
- 4
- 78
질문&답변
13-17 ModelViewSet pytest 오류
안녕하세요.보내주신 코드를 살펴보니, PostModelViewSet 코드에서 권한 설정에서 오타가 있었습니다.(사진)permission_classes 인데 permission_class 로 코드를 쓰셔서, 해당 권한 설정이 작동되지 않은 것이구요. 그러니 디폴트 권한인 AllowAny 로 처리되었을 것입니다.그래서 인증되지 않은 CREATE 요청은 IsAuthorOrReadOnly 권한에 걸려서 403 Forbidden 응답을 받아야 하는 데, AllowAny 정책으로 권한은 통과되고, 빈 요청 데이터로 PostSerializer를 통한 유효성 검사가 수행되고, 빈 요청 데이터이기에 유효성 검사에 실패하게 되어, 400 Bad Request 응답을 받으시게 된 것입니다. 나머지 두 개 테스트도 동일한 문제 같습니다.이와 같은 오타는 쉽게 인지할 수 없는 데요. 이러한 설정도 IDE 자동완성을 자주 활용하게 되는 데요. 자동완성 부분은 파이참이 vscode 보다는 좀 더 똑똑하게 동작해서, 저는 주로 파이참에서 개발하고 cursor (AI 개발툴) 도움이 필요할 때에만 잠시 cursor로 코드를 생성하는 방식으로 활용하고 있습니다.그리고, 실패하는 테스트를 아래의 IDE 기능으로 한 줄씩 실행해보시면 빠르게 원인을 파악하실 수 있습니다. 상상만 해서는 원인을 찾기는 어렵거든요. 테스트 시에는 클라이언트 요청과 서버 요청이 서로 분리되지 않고, 한 번에 수행이 되거든요. 그러니 ViewSet 코드에도 break point를 걸어두시면 한 번에 디버깅을 할 수 있으니 편리합니다.(사진)오류를 만나시는 상황이 많이 답답하시겠지만, 오류를 만나고 해결해보시는 과정을 쌓아가시면, 그만큼 성장하시는 좋은 기회가 되시리라 생각합니다. 오류 상황을 같이 고민해보며 같이 차근차근 성장해나가보시죠.살펴보시고 댓글 부탁드립니다.화이팅입니다. :-)
- 0
- 4
- 78
질문&답변
13-17 ModelViewSet pytest 오류
안녕하세요.테스트가 예상한 대로 동작하지 않을 때, 코드 만으로 파악이 어려울 때 정확한 파악을 위해서는 편집기의 디버거를 활용해보시는 방법이 정도이고 정확한 방법입니다. // 강의와 어딘가 다른 포인트가 있을 것입니다.일단 현재 프로젝트를 압축해서 help@pyhub.kr 메일로 보내주시면, 제가 바로 코드를 확인해보겠습니다.화이팅입니다. :-)
- 0
- 4
- 78
질문&답변
13-16) UpdateAPI test 에러
안녕하세요. SAFE_METHODS 값은 rest_framework.permissions 에 SAFE_METHODS 가 정의되어있습니다. 보여주신 코드에서도 permissions.SAFE_METHODS 코드로 참조하신 부분이 있네요.실제 예외가 발생한 곳은 /blog/api.py 인데요.(사진)blog/api.py 코드에서 임포트 코드가 누락되신 듯 합니다. 아래 코드를 추가해보시겠어요?from rest_framework.permissions import SAFE_METHODS살펴보시고 댓글 부탁드립니다.화이팅입니다. :-)
- 0
- 2
- 20
질문&답변
13-14 pytest 코드 실행 오류
안녕하세요.장고 테스트에서는 settings.DATABASES["default"]의 "NAME"에 지정한 데이터베이스를 사용하지 않고, 이 이름에 접두어 "test_"를 붙인 데이터베이스를 디폴트 테스트 데이터베이스로 사용합니다.이는 테스트 시에 서비스 데이터를 변경하지 않기 위함이고, 테스트를 수행할 때마다 매번 데이터베이스를 새롭게 생성해서, 원본 데이터베이스와 독립적인 테스트 환경을 유지합니다지정하신 PostgreSQL 서버에서 test 데이터베이스 생성권한이 없거나, test 데이터베이스에서 데이터베이스 테이블 생성 권한이 없어서 발생하는 이슈 같습니다. 해당 PostgreSQL 서버에 test_ 접두어를 붙인 데이터베이스를 생성하신 후에 테스트를 수행해보시면 어떤가요?혹은 settings.DATABASES["default"]에 "NAME" 외에 "TEST" 항목으로 { "NAME": "원하시는_TEST_데이터베이스이름" } 지정하시어, 원하는 테스트 데이터베이스 이름을 지정하실 수도 있습니다.관련 문서 : https://docs.djangoproject.com/en/5.1/topics/testing/overview/#the-test-database살펴보시고, 댓글 부탁드립니다. :-)
- 0
- 1
- 44
질문&답변
conda-forge postgresql 과 multithreading
안녕하세요.개발 시에도 실제 서비스에서 사용할 데이터베이스 엔진을 사용하신다면, PostgreSQL에서만 제공하는 기능도 개발 시에 활용하실 수 있으니 편리한 점이 있습니다.데이터베이스는 OS 팩키지 매니저에서 지원하는 것으로 설치하셔도 좋고, supabase나 AWS 등의 PostgreSQL 서비스를 활용하시는 것도 좋습니다.https://supabase.com/supabase는 PostgreSQL 기반의 서비스이며, 무료 플랜도 있고, 장고에서 직접 database 연결도 할 수 있습니다.그리고, 길고 계산량이 많은 작업의 경우 Python에서는 View 단에서 직접 처리하기 보다, Celery 등의 별도의 Worker를 통해 처리를 많이 하는 편입니다.https://docs.celeryq.dev/en/latest/django/first-steps-with-django.html살펴보시고 댓글 남겨주세요. :-)
- 0
- 1
- 26
질문&답변
자동완성기능
안녕하세요.말씀하신 기능은 요즘 IDE에서 많이 지원하는 code completions 기능이구요. AI 기반의 기능입니다.대표적으로 GitHub의 Copilot이 있구요. 강의 영상에서도 GitHub의 Copilot을 사용했습니다. 이는 유료 기능이구요. GitHub에서 $10/월 요금으로 사용하실 수 있구요. VSCode 및 PyCharm 등에서 사용하실 수 있습니다.https://code.visualstudio.com/docs/copilot/ai-powered-suggestions그 외 에도 Cursor IDE도 요즘 핫한데요. 이는 $20/월 입니다.https://www.cursor.com/저는 요즘에는 Cursor IDE를 자주 사용하고 있습니다.AI 툴은 경계해서 사용하지 않으면, 실력향상없이 복&붙 머신이 되어 AI에 먹혀버릴 수도 있으니, 주의해서 사용해주세요. ;-)
- 0
- 2
- 30
질문&답변
로그아웃 405 에러
안녕하세요.본 강의는 장고 4.x 버전 기준으로 진행을 했었습니다. 현재 장고 5 버전이 설치되어있으신 상황같습니다. 장고 5.0 부터 장고 auth 앱에서 제공하는 LogoutView에서는 GET 요청을 통한 로그아웃 요청은 허용하지 않고, POST 요청을 통한 로그아웃 요청 만을 허용하고 있습니다.강의 진행 시에는 강의 버전과 동일한 장고 버전으로 진행 부탁드립니다.장고 프로젝트 사전작업 강의에서 4.1.7 버전을 설치했었습니다. 4.2 버전도 가능하니, pip install 'django==4.1.7' 명령 혹은 pip install 'django~=4.2.0' 명령으로 지정 버전의 장고를 설치하실 수 있습니다.만약 장고 5.0 버전으로 강의를 진행하시겠다면, 장고 5.0을 사용하시는 현재 상황에서는 /accounts/logout/ 페이지로의 직접 접근은 불가하니깐요. 일단 다음 강의로 진행하시고, 이후 로그아웃 링크 생성 부분은, 이에 대해서는 제가 작성한 아래 포스팅이 있으니 참고해보시겠어요?https://pyhub.kr/recipe/Y8b3dWNOkN4D5/살펴보시고 댓글 부탁드립니다. :-)
- 0
- 1
- 48
질문&답변
템플릿 관련 질문입니다.
안녕하세요.파이썬/장고나 여러 프로그래밍 언어/웹프레임워크에서는 템플릿(Template) 시스템을 지원해줍니다.템플릿은 컨텐츠(데이터)를 채우기 위한 일관된 틀을 제공하는 데요. 파워포인트의 템플릿과 비슷한 역할로 볼 수 있습니다.(사진)단, 장고의 템플릿 시스템은 보다 손쉬운 문자열 조합을 지원함을 목적으로 합니다.아래와 같은 데이터가 있을 때,(사진)아래와 같은 문자열을 만들어서, 이메일이나 문자 메세지로 보낼려는 상황으로 가정해보겠습니다.(사진)템플릿 시스템을 쓰지 않고, name 값과 product_list 값을 참조해서 위 문자열을 조합을 할려면, 파이썬 언어 레벨에서 직접 문자열을 조합해야 하는 데, 이는 문자열 포맷에 맞춰 일일이 파이썬 코드를 구현해야하는 번거로움이 있고, 문자열(특히 HTML)과 파이썬 로직이 혼합되어 코드의 가독성이 떨어지고, 재사용성도 무척 낮습니다. // 주문량이 3개 이상인 상품만 필터링해서 조합할려면, 파이썬 코드를 또 추가해야 합니다.(사진)그런데, 템플릿 시스템을 활용하면, 문자열 구성에 대한 부분은 템플릿에 모두 명세할 수 있기 때문에, 재사용성과 유지보수성이 증가됩니다. 템플릿 시스템 자체적으로 조건문, 반복문, 필터 등을 제공하기 때문에, 파이썬 코드 작성없이도 템플릿 문법 만으로 복잡한 문자열을 조합할 수 있게 됩니다.(사진)네이버 뉴스 페이지에서의 아래 HTML 코드도 템플릿 시스템을 통해 조합된 문자열입니다. 템플릿 시스템없이 이렇게 복잡한 문자열을 조합하는 것은 거의 불가능합니다.(사진)살펴보시고, 추가 질문은 댓글로 남겨주세요.화이팅입니다. ;-)
- 0
- 2
- 36
질문&답변
[11-30] 강의 crispy form 적용에서 오류가 발생해서 관련 문의 드립니다.
안녕하세요.현재 사용 중인 django-components 라이브러리의 버전이 어떻게 되시나요?django-components 라이브러리의 버그 같습니다. django-components 라이브러리 0.63 버전에서 해결된 이슈로 보여집니다.강의에서는 0.61 버전으로 진행했었는데요. 아래 명령으로 0.63 버전으로 올려서 테스트해보시겠어요?pip install 'django_components==0.63'확인 부탁드립니다.
- 0
- 3
- 59