묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결FastAPI 완벽 가이드
Update(수정)용 모델 질문 드립니다.
안녕하세요 교수님강의를 통해 많은 도움을 받고 있는 수강생입니다.수정 기능 구현 시, 전체 데이터를 Body에 담아 보내는 방식은 대용량 파일이나 멀티파트 폼 데이터 처리 시 효율성이 떨어지는 경험을 했습니다. 그래서 모든 필드를 Optional로 설정하여 부분 수정을 허용하게 하면 벨리데이션(Validation) 로직이 복잡해지는 문제가 발생했습니다. 현업에서는 어떤 식으로 업데이트 코드 스타일을 관리하는 것이 표준인지 교수님의 조언을 듣고 싶습니다.감사합니다.
-
해결됨[매일 완독 챌린지] 저자와 함께하는 <FastAPI로 기획에서 출시까지>
4주 1회차 과제
- is_host를 기준으로 호스트 사용자와 게스트 사용자를 구분하는 것은, 가입 당시부터 본인의 역할을 선택하여 구분 짓는 경우에 효과적인 것으로 판단됩니다. 가입 시점부터 역할(게스트/호스트)을 구분 지어서 관리하고자 하는 경우에 적절한 구조라고 생각되며, 호스트의 자격조건이 있거나, 검증이 필요한 서비스라면 이렇게 관리하는 방법이 적절해 보입니다. - 반면, 호스트/게스트의 타입을 캘린더의 존재 여부(또는 갯수)로 정의한다고 하면, 모든 가입자가 가입시에 동일한 자격을 갖는 가입자로서 가입처리가 되고, 추가 단계로서 캘린더를 생성 함으로 써, 호스트와 게스트의 역할을 자유롭게 넘나드는 자유도가 생기는 구조가 될 것 같습니다. - 지금은 커피챗을 목적으로 일정을 조율하는 목적을 갖는 시스템이므로, is_host를 사용하지 않는 결정을 하겠습니다. 전자상거래 시스템같은 판매자와/소비자 처럼 엄격한 구분과 자격을 검증해야 하는 시스템으로 여겨지지는 않기때문입니다. is_host 필드가 없어지는 경우에, 사용자의 상태(또는 역할)을 구분하기 위해서 매번 캘린더의 존재 여부를 확인해야 하지만 앞서 언급한 호스트와 게스트의 역할 변경에 열려있는 점이 중요하게 생각되기 때문입니다. 하지만 모든 가입자가 게스트로 시작하는 만큼 커피챗 호스트를 어떻게 유치할 것인가는 고민이 되는 부분입니다.
-
미해결Complete Full-Stack Python Developer Roadmap: Learn FastAPI, React, Database Design API Architecture
강의 업데이트에 대해 문의드립니다.
안녕하세요.커리큘럼을 봐도 현재 업데이트된 강의 시간내에 전부 커버가 안되고 있는 것으로 보이는데,강의는 어느정도 길이로 계획되어있고, 언제 업데이트가 전부 완료될지 예상 시점이 궁금하여 문의드립니다.
-
해결됨[매일 완독 챌린지] 저자와 함께하는 <FastAPI로 기획에서 출시까지>
페이지 144 코드 문의
def create_engine(dsn: str): return create_async_engine( dsn, echo=True, # SQLAlchemy가 실행하는 SQL을 콘솔에 출력하도록 함 ) def create_session(async_engine: AsyncEngine | None = None): if async_engine is None: async_engine = create_engine()위 코드중 마지막줄async_engine = create_engine() 여기에 dsn 인자가 없어서 오류 나지 않나요?
-
해결됨[매일 완독 챌린지] 저자와 함께하는 <FastAPI로 기획에서 출시까지>
책과 github 코드가 다릅니다 p130
책에서는 128pif TYPE_CHECKING: from appserver.apps.calendar.models import Calendar이렇게 appserver 부터 시작하니다 130페이지 하단에 보면https://gilbut.co/c/25069573YP커밋 참조하라고 되어있는데요깃헙에서는 if TYPE_CHECKING: from apps.calendar.models import Calendar여기는 apps부터 시작합니다. 초보에게는 이런거 하나하나가 어렵네요어떤게 맞는 건지 궁금합니다.
-
미해결FastAPI 완벽 가이드
API 라우트 설계 시 중첩 구조 분리 기준 질문
안녕하세요 교수님items나 users처럼 딱 떨어지는 리소스는 분리가 쉽지만, 실제로는 모델끼리 얽혀 있는 경우가 많아 라우팅이 모호해지곤 합니다.예를 들어, /products라는 경로가 있음에도 불구하고 특정 맥락에 따라 /users/{user_id}/products와 같이 nested 방식 으로 접근해야 하는 상황이 자주 발생하는데요. (반대인 경우도 발생)이렇게 데이터가 연결되어 있을 때 어디까지 경로를 중첩시킬지, 혹은 어느 시점에 라우트를 완전히 분리해야 할지 교수님만의 노하우나 팁이 있으실까요? 실무적인 관점에서 라우트 설계의 명확한 기준을 잡고 싶어 질문 드립니다.추가로 데이터 모델과 라우트 이름을 보통 같게 하나요?나중에 리팩토링 할 때 문제가 없을까요?감사합니다!
-
해결됨[매일 완독 챌린지] 저자와 함께하는 <FastAPI로 기획에서 출시까지>
120페이지 코드 질문드립니다.
120 페이지 코드 보면 created_at 코드가class OAuthAccount 코드하고 들여 쓰기 레벨이 같은데 맞는건가요?
-
해결됨[매일 완독 챌린지] 저자와 함께하는 <FastAPI로 기획에서 출시까지>
테스팅과 학습법의 관계 (?)
"6장: 테스팅 이해하기와 단위 테스트 연습하기" 강의 초반에 "테스팅을 잘하는 방법이 유용한 학습법과 맞닿아 있다" 고 하셨는데, 왜 그런지 궁금해서 글 남깁니다. 테스팅을 잘하는것과 학습이 어떻게 맞닿아 있는 것일까요. 강사님의 의견을 공유해주시면 감사하겠습니다.
-
해결됨[매일 완독 챌린지] 저자와 함께하는 <FastAPI로 기획에서 출시까지>
commit과 flush 관련
질문이 조금 많아서 죄송합니다. 다음 테스트 코드에서 commit()과 flush()의 위치가 이상해보였습니다.async def test_user_detail_for_real_user(client: TestClient, db_session: AsyncSession): user = User( username="test", password="test", email="test@example.com", display_name="test", is_host=True, ) db_session.add(user) await db_session.commit() await db_session.flush()commit()은 DB에 반영된 트랜잭션의 변경사항을 영속적으로 만들고 트랜잭션을 종료하는 코드로 이해하고 있고, flush()는 트랜잭션의 변경사항을 실제 DB에 SQL 구문을 통해 반영하는 것으로 알고 있습니다. 그래서 이 둘의 순서가 변경된 것이 아닌지 혹은 다른 의도가 있는 것인지 궁금합니다.
-
해결됨[매일 완독 챌린지] 저자와 함께하는 <FastAPI로 기획에서 출시까지>
Annotated 대 인자 기본값 관련해서
default_deps에서 기본 값으로 Depends 함수가 반환하는 객체가 할당되는 것까지는 이해했는데, 해당 동작이 왜 의도하지 않은 동작인 건지가 이해되지 않습니다. 오히려 아래 쪽이 기본값이 적용되니 더 편리해 보이기만해서 Annotated를 권장하는 이유가 와닿지 않더라구여. 이에 대해서 조금 더 구체적으로 알고 싶습니다.DbSeDep = Annotated[AsyncSession, Depends(use_session)] async def annotated_deps(session: DbSeDep): pass annotated_deps() async def default_deps(session: AsyncSession = Depends(use_session)): pass default_deps()
-
해결됨[매일 완독 챌린지] 저자와 함께하는 <FastAPI로 기획에서 출시까지>
import 경로 관련하여
5.4.3 Alembic 설정하기 부분에서 다음 문장이 잘 이해되지 않습니다."우리는 그동안 appserver 디렉터리 안을 시작점(root)으로 해왔습니다. 그래서 프로젝트 내 다른 패키지에 접근하는 경로도 from appserver.apps.account 나 from appserver.apps.calendar 또는 from appserver.db import DSN 처럼 접근했었죠."appserver 디렉터리 안이 시작점이 아니고 release-your-project-with-fastapi가 시작점(루트)이 되어야 하는 것 아닌가요? fastapi-dev를 실행한 것이 appserver 디렉터리가 위치한 곳이니 루트는 현재 위치한 폴더(release-your-project-with-fastapi)이지 appserver가 아니지 않나? 라는 의문이 들었습니다.
-
미해결[2025 신규] 어서와, Fast API는 처음이지?
설치오류
SQL 설치하는데 이거 왜이럴까요 ㅠㅠ
-
해결됨[매일 완독 챌린지] 저자와 함께하는 <FastAPI로 기획에서 출시까지>
사용자(User)의 정의에 대한 답변. & 토이 프로젝트 기획에 유용한 툴 질문
안녕하세요 :) 좋은 강의와 책 잘 보며 열심히 따라가고 있습니다! 이번 강의 중 언급하셨던 사용자에 대한 저만의 정의를 생각해봤습니다.시스템, 서비스 혹은 제품을 이용하게 될 주체이자, 프로젝트 진행 시 직/간접적인 경험 등을 우선적으로 고려할 대상.라고 생각합니다. 추가 질문으로 기획 시에 발생하는 아이디어나 문서 정리, 다이어그램 등 ERD, User flow 차트처럼 (1) 기록으로 남겨야 하는 것들은 어떤 게 있으며, (2) 어느 툴을 사용하는 게 유용할까요? 손으로 쓰는 것이 편해서 종이에 펜으로 그리면서 설계한 적이 많았습니다. 그 뒤에 Figma나 스프레드 시트로 표현했구요. 하지만, 추후 프로젝트 README.md 에 넣을 것도 고려하면 설계 혹은 기획부터 차근차근 리소스를 쌓아가는 게 어떤 가 싶어서 여쭙습니다! 무언갈 그려야 한다면 Figma를 사용하긴 하지만, 파워포인트 수준으로 밖에 활용하지 못하고 있는 것 같습니다. 전반적인 실험이나 개발 기록은 Notion(GitHub과 별개)을 활용하는 편 입니다. JIRA를 협업 및 이슈 추적에 Confluence는 Docs 관리로 써보고는 싶었지만, 현업에서 배우는 게 아닌 개인이나 4-5인 팀에서 제대로 활용하기가 어렵더군요.. (1) 설계 시 기록으로 남겨야 하는 것들은 어떤 게 있을까요?(2) 어느 툴을 사용하는 게 유용할까요? 감사합니다.
-
미해결Azure Native로 나만의 GPT 만들기
font.html azure blob에 다시 올려줘야하는거 맞을까요?
먼저 유사한 질문이 있었는지 검색해보세요.꼭 강의와 관련된 질문이 아니더라도, 최대한 답변해드리겠습니다.건의사항도 괜찮습니다.편하게 질문해주세요! 9:38에 html 소스 바꾸고, 다시 blob service에 다시 9:38에 변경한 소스파일을 다시 업로드해야하는거 맞을까요..?? 해당 작업을 해야되는게 맞다면 제 컴퓨터에서 수정했을 때 blob service에 수동으로 안올리고 자동으로 올려지게 하는게 ci/cd???같은건가요...?
-
미해결베개 투자법: 자면서 돈 버는 AI 주식 자동 매매 머신
미래에셋의 API 적용 가능성
강의 "베개 투자법: 자면서 돈 버는 AI 주식 자동 매매 머신" 에서 한국투자증권의 API 가 사용되었는데, 이것을 다른 증권회사 예를 들면 미래에셋의 API 를 사용하여 실전에 적용하는 것도 가능한가요? 이때 주의점은 무엇인가요
-
미해결React & FastAPI로 만드는 투표 커뮤니티 플랫폼: 결제 시스템으로 수익화까지!
추가 강의 업로드 계획은 어떻게 되시나요?
안녕하세요!현재 강의의 80%를 수강했습니다.노션강의자료를 보니 기능 추가예정이 적혀있어서 혹시 언제쯤 강의를 추가하실건지 아니면 추가된 부분의 코드만이라도 노션 혹은 깃허브에 업데이트가 가능한지 궁금합니다.답변 부탁드립니다.감사합니다.
-
미해결처음하는 파이썬 백엔드 FastAPI 입문 (FastAPI부터 비동기 SQLAlchemy까지) [풀스택 Part1-2]
강의자료 관련 질문
강의자료 받으려 하는데 현대자동차 직원은 수강자 계정인을 어떤 이메일로 받으면 되나요?
-
미해결FastAPI 완벽 가이드
signed cookie 와 jwt 토큰
안녕하십니까 강사님! 자세하게 좋은 정보 알려주심에 항상 감사드립니다!!제 짧은 지식으로 궁금한 점이 생겨 질문드립니다.사용자 인증을 구현할때 jwt토큰을 사용하는 방법도 있는 걸로 압니다. jwt토큰도 마찬가지로 signed cookie처럼 암호화(인코딩)해서 헤더에 같이 보내는걸로 알고 있습니다.두 방식이 비슷하다고 생각하는데 jwt토큰과 signed cookie로 인증하는 차이가 무엇인지 궁금합니다. 짧은 경험상 모든 기술간의 트레이드 오프가 존재했던 거 같은데 jwt토큰과 signed cookie에도 그러한 부분이 있는지 궁금합니다 !항상 감사드립니다~
-
미해결FastAPI 실전편: JWT와 Redis로 완성하는 인증 시스템
게시글 삭제 API 구현 시 누락된 부분에 대한 질문
강의에서 게시글 삭제 API를 배웠는데, 강의 화면이 잘려서 완전한 코드를 확인하지 못했습니다. @app.delete("/posts/{post_id}", response_model=dict) def delete_post(post_id: int, db: Session = Depends(get_db)): query = select(Post).where(Post.id == post_id) post = db.execute(query).scalar_one_or_none() if post is None: raise HTTPException(status_code=404, detail="게시글을 찾을 수 없습니다.") db.delete(post) # ← 여기서 화면이 짤림깃허브 확인해서 코드를 완성하긴 했는데, 다른 수강생들을 위해서 강의 수강자료 또는 강의 업데이트 부탁드립니다.
-
미해결FastAPI 실전편: JWT와 Redis로 완성하는 인증 시스템
게시글 목록 조회 시 불필요한 예외 처리에 대한 질문
강의에서 배운 게시글 목록 조회 코드에서 궁금한 점이 있습니다. @app.get("/posts", response_model=list[PostResponse]) def get_posts(db: Session = Depends(get_db)): query = select(Post).order_by(Post.created_at.desc()) posts = db.execute(query).scalars().all() if posts is None: raise HTTPException(status_code=404, detail="게시글이 존재하지 않습니다.") return postsSQLAlchemy 2.0의 .all() 메서드는 데이터가 없을 때 None을 반환하는 게 아니라 빈 리스트 []를 반환한다고 알고있습니다.결과적으로 if 문을 탈 수가 없는데, 필요 없는 코드가 아닌가 해서요.그냥 빈 리스트를 반환하면 되지 않나요?