파이썬과 장고에 진심인 소프트웨어 개발자
파이썬/장고 질답 및 교육서비스, 파이썬 사랑방 주인장
파이썬 사랑방 with Django/React 커뮤니티 (구. Ask Django) 운영자
(전) Microsoft Azure MVP 어워드 수상 (2016년~2022년)
대외 활동
오프라인 교육 : SK텔링크, LS그룹, 삼성 디스플레이, 부산대학교 정보화본부, 서울대학교 벤처경영학연합전공, 패스트캠퍼스 웹서비스 개발 캠프 3기 등
기술 자문 : 유클리드소프트, 부산대학교, 한국산업기술평가관리원, 한국방송통신전파진흥원 등
여러분의 파이썬/장고/리액트 페이스메이커가 되겠습니다. 😉
안녕하세요. 파이썬과 웹개발을 사랑하는 20년차 소프트웨어 개발자 이진석입니다. 파이썬의 놀라운 생산성에 매료되어 임베디드 소프트웨어부터, PC 애플리케이션, 공장 자동화, 웹서비스, 앱개발까지 두루두루 파이썬으로 서비스해본 파이썬 홀릭입니다. 저는 생산성을 항상 고민하는 사람이고 파이썬이 아직까지 제게는 최고의 생산성을 안겨주는 최고의 선물입니다.
파이썬/장고/HTMX/리액트와 관련하여 궁금한 부분이 있거나 다양한 이야기 나누고 싶으신 분과 대화를 나누고 저의 경험을 나눠드리고자 멘토링을 시작하게 되었습니다.
멘토링이 도움이 되실 수 있는 분들
- 웹개발이 처음인데, 파이썬과 장고에 대해서 관심이 있으시고, 어떻게 시작해야할지 막막하신 분들
- 보다 효율적인 장고 웹 개발에 대해서 궁금하신 분들
- 작성하신 장고 코드에 대해서 코드 리뷰가 필요하신 분들
- 운영하는 강의에 대해서 궁금한 내용이 있으신 분들
운영 중인 강의
- (인프런) 장고 설계철학으로 시작하는 파이썬 장고 입문
- (인프런) 파이썬/장고로 웹채팅 서비스 만들기 (Feat. Channels) - 기본편
- (인프런) ChatGPT 영어 상황극 채팅 서비스 만들기 (Feat. 파이썬/장고채널스)
- (인프런) 파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)
- (인프런) 파이썬/장고로 결제 시작하기 (Feat. 아임포트) - 기본편
진행 방식
- Google Meet을 통해 온라인으로 진행하구요. 화상은 끄셔도 괜찮습니다.
- 예약이 되면, 신청 시에 기입해주신 이메일과 문자 메시지를 통해 접속주소를 알려드립니다.
- 예약 시간은 상호 협의 하에 조정 가능합니다.
- 시간이 지나도 너무 신경 쓰지 않으셔도 괜찮습니다. 평균적으로 20분~30분 정도는 이야기를 더 나누는 편입니다.
준비하실 내용
가능하시다면, 다음의 내용을 신청 시에 "지식공유자에게 남길 메시지"로 보내주시거나, 멘토링 사전 안내의 이메일 주소로 미리 보내주시면, 제가 멘토링을 준비하는 데에 도움이 됩니다.
- 멘토링을 통해 얻고자 하는 목표
- 질문하려는 내용
---
당신의 파이썬/장고 페이스메이커가 되겠습니다. ;-)
강의
수강평
- 파이썬/장고로 웹채팅 서비스 만들기 (Feat. Channels) - 기본편
- 장고 설계철학으로 시작하는 파이썬 장고 입문
- 파이썬/장고로 웹채팅 서비스 만들기 (Feat. Channels) - 기본편
- 장고 설계철학으로 시작하는 파이썬 장고 입문
게시글
질문&답변
Django-Components의 0.128 세팅
안녕하세요. 어느덧 django-components 버전도 0.129 버전이 되었네요.강의의 장고 프로젝트에 django-components 0.129 버전 대응 방법을 아래 링크에 정리해봤습니다.https://ai.pyhub.kr/django/components/django-components/setup아래 커밋을 통해서도 동작을 확인했으니, 확인해보시고 댓글 부탁드립니다. :-)https://github.com/pyhub-kr/course-django-complete-guide-v3/commit/c0d965ac1a1df9a33986b70ff6d8a65e8b699fc9늦어서 죄송합니다.
- 0
- 3
- 68
질문&답변
유저목록 확인 문제 질문드립니다.
안녕하세요.장고 View 단에서 page not found가 뜨는 이유는 여러 가지 입니다.urlpatterns 리스트에서 매칭된 URL Pattern 을 찾지 못했을 때.두번째는 view 내에서 get_object_or_404 메서드 내에서 지정 name의 Room을 찾지 못했을 때, get_object_or_404 메서드 내부에서 Http404 예외가 발생하고 이것이 page not found 응답으로 이어갑니다.어떤 상황인지 파악하셔야 합니다. 단지 page not found 라고만 인지하시면 문제 해결이 어렵습니다. 현재 어떤 URL로 요청을 했고, 어떤 응답화면을 보고 계신지 확인을 하시면 좋습니다. settings.DEBUG = True 일 때에는 에러응답에 디버깅에 필요한 정보를 주거든요.요청 URL과 응답화면 스크린샷, 그리고 찾을려고 하시는 Room 레코드의 존재유무를 확인해서 보여주시겠어요?화이팅입니다. :-)
- 0
- 2
- 35
질문&답변
안녕하세요 선생님,
안녕하세요.self.scope["url_route"]["kwargs"] 사전은 websocket_urlpatterns 에 명시한 path에 정의한 값들로 구성됩니다. 장고 View 함수에서 인자로 전달받는 값과 같습니다.그러니 path("ws/chat//", ...) 처럼 room_pk 항목이 있으셔야 합니다.살펴보시고 댓글 남겨주세요. :-)
- 0
- 1
- 21
질문&답변
하나의 채팅방만 만들어보려고 하는데 잘 안되고 있습니다.
안녕하세요.TypeError: 'list' object is not callable 예외가 발생한 상황입니다. 에러 메시지를 잘 보시면 list 객체는 호출할 수 없다는 내용인데요. 리스트 객체를 호출한 상황이라는 거죠. 함수처럼 호출되어야하는 부분에 리스트 값이 들어간 상황으로 예상할 수 있습니다.asgi.py 코드를 보시면, AuthMiddlewareStack 미들웨어 스택에 urlpatterns 리스트를 그대로 넘기고 있습니다. AuthMiddlewareStack 는 asgi app (함수처럼 호출할 수 있습니다.)을 인자로 받고, asgi app을 반환합니다. 그런데 리스트를 넘기셔서 현재의 오류가 발생하신 듯 보입니다.urlpatterns 리스트는 URLRouter 앱으로 감싸주셔야 asgi app 으로 처리됩니다. AuthMiddlewareStack(URLRouter(urlpatterns + urlpatterns))와 같은 포맷으로 구현하심면 되실 듯 하구요.room_chat 뷰에서 미인증 유저로부터의 요청은 거부토록 먼저 구현하구요. 웹소켓 단에서는 Consumer에서 연결요청을 받을 때 connect 메서드가 호출이 되고, 이때 연결을 수락할려면 self.accept() 를 호출하여 요청을 수락하고, 연결을 거부할려면 self.close()를 호출하시어 거부하실 수 있습니다.살펴보시고 댓글 남겨주세요. 화이팅입니다. :-)
- 0
- 1
- 30
질문&답변
공유자님 이 강의 공부 방법에 대한 질문입니다.
안녕하세요.강의를 효과적으로 접근하는 방법은, 빠르게 전체를 훓으며 전체적인 큰 흐름(숲)을 먼저 파악하고, 이후에 반복 학습을 통해 세부 내용을 보완하는 방식입니다. 초반에는 강의의 각 챕터를 가볍게 따라가시며 전체적인 구조와 흐름을 이해하는 데 집중하시구요. 이 과정에서 이런 개념이 있구나 정도로만 인식하시는 것이 학습 부담을 줄이고 전반적인 맥락을 파악하시는 데 도움이 됩니다.그리고, 이 강의 하나를 온전히 이해하시게 되면 장고 중급자로서 이야기할 수 있을 정도로 다루는 내용이 깊습니다. 강의에서 장고를 포함한 웹 기술 전반을 다루므로 모든 내용을 완벽하게 익히지 않아도 됩니다. 차근차근 경험해보시며 이해도를 쌓아가시면, 자연스럽게 장고 위주의 웹 기술의 근본을 이해하실 수 있을 것입니다.더불어, 파이썬의 함수, 클래스, 상속, 일급함수, 장식자와 같은 파이썬 문법에 대해서는 장고 내에서도 많이 사용되므로, 시간을 들여 깊이있게 공부하시면 좋습니다.살펴보시며, 다양한 질문 많이 남겨주세요.화이팅입니다. :-)
- 0
- 2
- 41
질문&답변
도커와 연동 관련 질문드립니다.
장고 템플릿은 SSR (Server Side Rendering). 즉 서버 단에서 HTML 응답을 만들 때 사용합니다.UI를 JS로 구성하셨다면, 이 코드는 서버 단이 아닌 클라이언트 단에 JS 파일이 다운로드되어 동작되어야 합니다. 서버 단에서 코드가 수행되는 것이 아니라, 단순히 서버는 이 JS 파일들을 서빙(serve)만 할 뿐, 브라우저 단에서 이 JS파일들을 로딩하여 수행되어야 합니다.JS로 구성하신 부분이 SPA (Single Page Application)인가요? frontend 부분 만으로 UI가 뜨는 상황인것이죠? 그럼 frontend 서비스와 django 서비스는 별개의 서비스로 동작하는 것이구요. django 서비스는 API 서비스로만 사용하시는 것으로 보여집니다. SPA라면 장고 서비스와 별개의 서비스로 생각하시고, nginx와 같은 별도의 웹서비스로 띄우시고 장고 웹서비스와 도메인만 맞춰주시면 됩니다.JS 파일이 다운로드되는 주소와 장고 API 주소가 포트 번호만 다른 경우라면, 세션 활용을 위해 장고 단에서는 CORS 설정과 JS 단에서 http 요청을 보낼 때에는 credentials: "include" 설정을 추가해주시면 쿠키가 공유되어 세션인증까지 같이 활용하실 수 있습니다. 아래는 다른 강의인 장고/리액트 강의의 슬라이드입니다. 참고하세요.(사진)그런데, 지금처럼 구성하시면, JS 코드에 UI 코드가 이리저리 스파게티처럼 뒤섞여있기에 UI를 관리하기가 무척 어려워보입니다. :-(SPA로 하실 것이라면, 리액트나 vue.js와 같은 UI 라이브러리의 도움을 받으시는 것이 나으실 수도 있습니다.더 궁금하신 부분이 있으시면 help@pyhub.kr 메일로 주시면, 확인해드리겠습니다. :-)
- 0
- 3
- 49
질문&답변
도커와 연동 관련 질문드립니다.
안녕하세요.전부 js 파일로 만드셨다는 것이 어떤 의미인지, 그 의도를 잘 모르겠습니다. 샘플로 js 파일의 코드가 어떻게 구성되어있고, 각 파일들을 어떻게 활용코자 하시는지 알려주시면, 그에 맞춰 가이드를 드리겠습니다. :-)
- 0
- 3
- 49
질문&답변
채팅방 참여자 목록 - 채팅방 입장/퇴장 실시간 이벤트 처리
보내주신 메일 잘 확인했습니다. 보내주신 프로젝트를 제가 직접 돌려보니 delay없이 잘 동작하네요. 흠. (로컬 redis)일단 제가 확인하기로는 Delay는 없었는 데요. 혹시 유저가 단일 탭을 열어두고 채팅방에 들어왔다가 나가도 동일하게 Delay가 발생하나요?그리고, 혹시 redis는 어디 서버를 쓰고 계시나요? 로컬 redis가 아니시라면 로컬에서도 redis를 구동해서 테스트해보시겠어요?각 이벤트의 발생여부를 확인하는 가장 확실한 방법은 로그를 출력해보는 것입니다. 아래 gist 페이지에 로그 남기는 방법을 설명해뒀으니 참고하시어 로그를 한 번 찍어보시고, 각 이벤트들이 정상 동작하는 지 확인해보시겠어요?https://gist.github.com/allieus/275a4b382ea0bb3a7e470dd2b2c75a9e살펴보시고 댓글 부탁드립니다. :-)
- 0
- 2
- 33
질문&답변
채팅방 참여자 목록 - 채팅방 입장/퇴장 실시간 이벤트 처리
안녕하세요.유저는 브라우저 여러 창/탭을 통해 다수의 웹소켓 연결을 가질 수 있구요.특정 채팅방에서 해당 유저의 마지막 disconnect 시에 퇴장 처리 메시지를 보여주도록 했습니다.한참 시간이 지난 후에 보여진다면, 웹소켓 연결이 남아있는 것은 아닐지 의심이 됩니다.웹소켓의 disconnect 이벤트는 유저와의 웹소켓 연결이 끊어진 직후에 즉시 발생합니다.redis 단에서도 지연은 발생하지 않습니다.왜 delay가 발생하는 것인지 의문이네요. delay로 판단하신 상황에 대한 보다 자세한 설명과, 지금 구동하신 환경과 프로젝트 코드를 help@pyhub.kr 메일로 첨부로 보내주시면, 저도 동작을 한 번 더 확인해보겠습니다.화이팅입니다! :-)
- 0
- 2
- 33
질문&답변
mydjango.py 질문 있습니다.
안녕하세요.답변 1) django runserver가 돌아가지 않는다고 말씀하신 것이 터미널에서 실행하신 상황이신가요? 아니면 vscode의 "Run and Debug" 메뉴를 말씀하시는 것일까요?vscode의 "Run and Debug" 메뉴는 프로젝트의 .vscode/launch.json 경로의 실행 설정 파일에 django 설정으로 생성을 하시면, 장고 개발서버로 디버그가 가능해지십니다. 해당 경로의 파일을 확인해보시구요.그리고, vscode에서 파이썬 프로젝트를 여실 때에는 반드시 해당 프로젝트 루트를 직접 여셔야 합니다. 만약 2개 프로젝트를 모두 보실 목적으로, 프로젝트의 상위 폴더를 여셨다면 파이썬 경로가 맞지 않아 제대로 동작하지 않을 가능성이 있습니다.2개 프로젝트를 보실려면, vscode 창을 하나 더 띄우셔서 별개 프로젝트로서 여셔야 합니다.확인해보시고 댓글 주시겠어요?화이팅입니다. ;-)
- 0
- 3
- 33