묻고 답해요
163만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[매일 완독 챌린지] 저자와 함께하는 <FastAPI로 기획에서 출시까지>
patch 요청시 payload가 넘어가지 않습니다.
아래 두 요청 코드에서 patch 요청 시 payload가 엔드포인트 함수에서 None으로 잡혀 model_dump()에서 오류가 발생합니다. 원인을 잘 모르겠습니다.[오류][요청 코드]@pytest.mark.parametrize("payload", [ {"display_name": "푸딩캠프"}, {"email": "hannal@example.com"}, {"display_name": "푸딩캠프", "email": "hannal@example.com"}, ]) async def test_사용자가_변경하는_항목만_변경되고_나머지는_기존_값을_유지한다( client_with_auth: TestClient, # 인증을 받은 클라이언트 payload: dict, # 클라이언트 요청 페이로드 host_user: User, # 클라이언트 사용자 ): # 현재 사용자 정보를 보관한다. before_data = host_user.model_dump() response = client_with_auth.patch("/account/@me", json=payload) # (...)async def test_비밀번호_변경_시_해싱_처리한_비밀번호가_저장되어야_한다( client_with_auth: TestClient, host_user: User, db_session: AsyncSession, ): before_data = host_user.hashed_password payload = { "password": "new_password", "password_again": "new_password", } response = client_with_auth.patch("/account/@me", json=payload) # (...)[엔드포인트]@router.patch("/@me", response_model=UserDetailOut) async def update_user( user: CurrentUserDep, session: DbSessionDep, payload: UpdateUserPayload = Body(...), ) -> User: updated_data = payload.model_dump(exclude_none=True, exclude={"password", "password_again"}) stmt = update(User).where(User.id == user.id).values(**updated_data) await session.execute(stmt) await session.commit() await session.refresh(user) return user [스키마]class UpdateUserPayload(SQLModel): display_name: str | None = Field(default=None, min_length=4, max_length=40) email: EmailStr | None = Field(default=None, max_length=128) password: str | None = Field(default=None, min_length=8, max_length=128) password_again: str | None = Field(default=None, min_length=8, max_length=128) @model_validator(mode="after") def check_all_fields_are_none(self) -> Self: if not self.model_dump(exclude_none=True): raise ValueError("최소 하나의 필드는 반드시 제공되어야 합니다.") return self @model_validator(mode="after") def verify_password(self) -> Self: if self.password is not None or self.password_again is not None: # 둘 중 하나라도 들어오면 둘 다 있어야 함 if not self.password or not self.password_again: raise ValueError("비밀번호 변경 시 password와 password_again을 모두 제공해야 합니다.") if self.password != self.password_again: raise ValueError("비밀번호가 일치하지 않습니다.") @computed_field @property def hashed_password(self) -> str | None: if self.password: return hash_password(self.password) return None[픽스처]@pytest.fixture(autouse=True) async def db_session(): dsn = "sqlite+aiosqlite:///:memory:" engine = create_async_engine(dsn) async with engine.begin() as conn: await conn.run_sync(SQLModel.metadata.drop_all) await conn.run_sync(SQLModel.metadata.create_all) session_factory = create_session(engine) async with session_factory() as session: yield session await conn.run_sync(SQLModel.metadata.drop_all) await engine.dispose() @pytest.fixture() def fastapi_app(db_session: AsyncSession): app = FastAPI() include_routers(app) async def override_use_session(): yield db_session app.dependency_overrides[use_session] = override_use_session return app @pytest.fixture() async def host_user(db_session: AsyncSession): user = account_models.User( username="puddingcamp", hashed_password=hash_password("testtest"), email="puddingcamp@example.com", display_name="푸딩캠프", is_host=True, ) db_session.add(user) await db_session.flush() await db_session.commit() return user @pytest.fixture() def client_with_auth(fastapi_app: FastAPI, host_user: account_models.User): payload = LoginPayload.model_validate({ "username": host_user.username, "password": "testtest", }) with TestClient(fastapi_app) as client: response = client.post("/account/login", json=payload.model_dump()) assert response.status_code == status.HTTP_200_OK auth_token = response.cookies.get("auth_token") assert auth_token is not None client.cookies.set("auth_token", auth_token) yield client
-
미해결대세는 쿠버네티스 (초급~중급편)
nodePort 서비스 접근 Client sent an HTTP request to an HTTPS server
[👍좋은 질문을 했을 때 좋은 답변이 돌아 옵니다]1. 실습 중 본인의 환경이 가이드와 다른 부분이 있었다면 말씀해주세요.2. 해당 문제의 발생 빈도(재설치 여부)와 문제 해결을 위해 시도해본 케이스를 말씀해 주시면 원인 파악에 큰 도움이 됩니다.3. 에러 메시지만 봐서는 저도 모르는 경우가 많아요. 그전에 했던 작업이 포함된 캡쳐 화면도 부탁 드려요.4. 영상 내용에 대한 질문 시 해당 시간을 같이 올려 주시면 답변을 드리는 시간이 더 빨라집니다.5. 긴 로그는 제 메일로 보내주세요. (k8s.1pro@gmail.com) Service-실습 4:16 강의 보면서 따라 하는데 >curl 192.168.56.31:30000/hostnameClient sent an HTTP request to an HTTPS servercurl -k https://192.168.56.31:30000/hostname404 page not found이렇게 뜨네요 ㅠ
-
미해결대세는 쿠버네티스 (초급~중급편)
대시보드 화면이 달라요 ㅠㅠ
[👍좋은 질문을 했을 때 좋은 답변이 돌아 옵니다]1. 실습 중 본인의 환경이 가이드와 다른 부분이 있었다면 말씀해주세요.2. 해당 문제의 발생 빈도(재설치 여부)와 문제 해결을 위해 시도해본 케이스를 말씀해 주시면 원인 파악에 큰 도움이 됩니다.3. 에러 메시지만 봐서는 저도 모르는 경우가 많아요. 그전에 했던 작업이 포함된 캡쳐 화면도 부탁 드려요.4. 영상 내용에 대한 질문 시 해당 시간을 같이 올려 주시면 답변을 드리는 시간이 더 빨라집니다.5. 긴 로그는 제 메일로 보내주세요. (k8s.1pro@gmail.com) Service-실습 3:34 여기서 노드포트 서비스 생성 후 엔드포인트에 포트가 두개가 나온는데요 제 대쉬보드는 이상하게 강의에 나오는것과 계속 달라도 무시하고 쭉 진행했는데 이번에는 포트가 안보여서요강의에는 상세-> 내부엔드포인트에 포트가 두개나옴 저는 메타데이터만 보여요 ㅠㅠ
-
미해결클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지 (with 커서 AI)
output style 질문.
output style md 파일에 rule 개념을 넣으면 실제로 코드를 작성하고 반영할 때 해당 rule을 지키면서 반영하더라고요.CLAUDE.md 파일을 안만들고 특정 프로젝트에 적용하는 global rule 개념으로 사용해도 되는건가요?
-
미해결리눅스 IPC 프로그래밍 - 이론과 실습
bind(): Address already in use
한 번 소켓 예제 테스트하고 난 다음에또 실행하면bind(): Address already in use라고 나옵니다.close랑 상관없이항상 소켓파일을 지워줘야 하나요?
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
인텔리제이 무료버젼이 통합되었다는데 30일 무료버전이면 어떻게 사용하나요
1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요?예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]질문 제목 그 자체이긴합니다 인텔리제이 무료버전이 없어지고 통합되엇는데 https://www.jetbrains.com/ko-kr/idea/download/?section=windows해당 사이트에 나와있는걸 다운로드 하면될까요
-
미해결2026 코딩테스트 올인원 [JAVA]
추후 학습 계획 질문
안녕하세요!강의 수강 완료 후에는 복습하면서 다양한 문제를 풀어보면서 학습하는 방법이 좋을까요?..
-
미해결BHPT - 호스트 기반 모의해킹 기초
BHPT 랩 코드가 없습니다.
레드라쿤 가이드북 애플리케이션에 가입한 기록이 있습니다.아래 버튼을 클릭하여 계정 비밀번호를 설정하고 접근 권한을 얻으세요:비밀번호 설정비밀번호 설정를 클릭할 수 없을 때는 웹 브라우저에서 다음 링크로 접속할 수 있습니다.https://guides.redraccoon.kr/register/invite/EncIDXRi83bE7O1mQWLy1ECQ 상기 메일만 받았습니다.
-
미해결친절한 블렌더 - [LV.3] 캐릭터 애니메이션
5.0버전에서 그린 눈 또렷하게 하는 법
셋팅 쪽이 많이 달라져서 뭘로 눈 테두리 또렷하게 할 수 있는지 모르겠어요
-
미해결원클릭으로 AI가 생성해주는 Youtube 쇼츠 만들기 자동화(with n8n)
6강_아이디는 중복이 생길 수 있을것 같은데요?
질문 있습니다.6강 내용 중 시트에 랜덤 아이디를 만드는 부분요랜덤이래도 중복이 될 수도 있을 것 같은데요이부분은 개인적으로 수정해서 사용해야 할까요?아니면 뒤 강의에 수정하는 부분이 나올까요?아직 강의를 듣는중이긴 한데 미리 궁금해서 문의남깁니다.
-
해결됨블렌더 3D 아이소메트릭 방 만들기
기능 위치
3:47 의 오브젝트 데이터 프로퍼티 쪽에Nomals 가 없는데 어떻게 하면 되나요 ㅠㅠ
-
해결됨프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
강의자료 부탁드립니다. mytoughgirl@naver.com 입니다.
강의자료 부탁드립니다. mytoughgirl@naver.com 입니다.
-
미해결딥러닝 CNN 완벽 가이드 - TFKeras 버전
resize 질문
안녕하세요 선생님먼저 재밌게 잘 배우고 있습니다 감사합니다. opencv에 resize 방식 중 interpolation 옵션이 존재하던데 기본 옵션을 주로 사용하시나요?어떤 resize보간법을 주로 사용하시는지 궁금하고 경험적인 이유가 있다면 알고 싶습니다. 오늘 딥러닝 컴퓨터 비전 가이드도 수강을 시작할텐데 무척이나 기대가 됩니다! 감사드립니다.
-
미해결비전공자도 이해할 수 있는 Nginx 입문/실전
HTTPS 관련 코드 해석하기
안녕하세요. 섹션 7의 "35. Nginx, Certbot이 작성한 HTTPS 관련 코드 해석하기" 강의를 들으면서 궁금한 점이 생겨서 질문 남깁니다. server { # 2. 들어온 요청의 주소의 Host가 jscode.p-e.kr일 경우 (ex. http://jscode.p-e.kr/about) # https://jscode.p-e.kr/...(ex. https://jscode.p-e.kr/about)로 리다이렉트(301) 처리 if ($host = jscode.p-e.kr) { return 301 https://$host$request_uri; } # managed by Certbot # 1. jscode.p-e.kr 주소로 들어온 요청이면서 # 80번 포트(http)로 들어오는 요청일 때 # 이 server 블럭에서 처리하도록 설정 listen 80; server_name jscode.p-e.kr; # 3. 그 이외의 경우에는 404(Not Found)로 응답 return 404; # managed by Certbot } 강의자료에서 제공해주시는 /etc/nginx/conf.d/default.conf 파일의 일부 코드입니다.이미 server_name에서 jscode.p-e.kr 주소로 들어온 요청인지 확인하니깐, if( $host = jscode.p-e.kr) 는 없어도 되는거 아닌가요? 코드가 존재하는 다른 의도가 있는건지 궁금합니다.
-
미해결김영한의 실전 데이터베이스 입문 - 모든 IT인을 위한 SQL 첫걸음(SQL부터 차근차근)
sql서버가 켜지면 다시 꺼짐
mac m3 max 기준에서 8.0.44버전을 다운로드하면 sql서버가 켜지면 다시 꺼지고 켰다가 다시 꺼지고를 반복이 됩니다. 이런경우에는 어떻게 해야하나요?
-
미해결
매직마우스 사용으로 휠 가운데클릭불가, 회색팝업창 띄우는방법문의
안녕하세요 매직마우스 사용으로 마우스 휠 가운데를 누를수 없어 회색 팝업창 띄울수가 없는데 어떻게 만들어야할까요?
-
미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
문제 내용이 잘못된 것 같습니다.
안녕하세요. 강사님 2012년 이후라고 한다면 비교연산자가 >= 가 아니라 > 로 해야 하는 거 아닌가요?
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
자바를 처음 배울 때 이런 고민이 드는 게 정상일까요?
강의를 볼 때는 이해가 되는데, 막상 퀴즈를 풀려고 하면 어떻게 접근해야 할지 머릿속에서 잘 떠오르지 않습니다. 코드를 작성하는 데도 시간이 오래 걸리고, 결과를 보면 제가 짠 코드가 스스로 보기에 만족스럽지 않을 때가 많습니다. 자바를 처음 배울 때 이런 고민이 드는 것이 당연한 걸까요?
-
미해결노코드 버블, 클론웹사이트 만들기 A to Z
1강 캔버스 & 스타일 기본 설정 앱페이지 질문
1강에 보면 ADD a new page 라는 걸 누르시던데새로 업데이트 된 버블 계정으로는index, 404, reset_pw 이렇게 3개만 있는데어떤 걸 눌러야 하나요?
-
해결됨아바타 커뮤니티앱 만들기 (React Native Expo)
스크린 옵션 아이콘
피그마 디자인에서는 < 를 사용했는데강의에서는 Foundation "home"을 사용했어요!의도하신걸까요? 디자인이 최종 시안이라던가.. 그게 아니라면강의는 동영상이니 바꾸는데 공수가 많이 들어가니피그마에서 아이콘 바꿔주셔도 좋을것같습니다! 잡담으로 저는 자바스프링 백엔드로 시작해서 jQuery/Angular/Vue/React/Next를 풀스택으로 쓰는 회사들로 이직하면서 최종적으로 코틀린스프링을 메인스택으로 하고 있는데요.취미/공부/사이드 프로젝트로 Next.js랑 Flutter 배우고 이번에 RN배우는데 강사님의 코드퀄리티나 강의력이 깔끔한것 같아서 잘 보고 있습니다ㅎㅎ 25년 초에 릴리즈한 강의인데 26년에도 미션이나 질문에도 답 잘 달아주셔서 감사합니다.