묻고 답해요
143만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)
11장 팔로잉 기능 구현 관련
11장 팔로잉 기능 구현에서는팔로잉 하는 목록 페이지팔로우 하고 있지 않는 목록 페이지두 가지를 구현하였습니다.이를 기반으로 인스타그램처럼 프로필을 카드기반으로 꾸미고 10-12 에서 구현한 무한 스크롤을 적용하였습니다. 프로필 페이지에서 구현한 프로필 카드를 목록에서 재활용하여 반복을 줄이고자 했습니다.대부분의 기능은 구현하였습니다만, 강의의 내용만으로는 스스로 해결하기 힘든 점들이 있어 질문글을 파란색으로 남깁니다. 우선, 팔로잉 목록과 언팔로인 목록을 나눈 경우 언팔로잉 목록에서 내가 팔로잉 한지 모르고 검색한 경우 유저 목록이 검색되지 않는 불편함이 존재할 수 있습니다.물론 인스타 그램의 경우 강사님께서 구현한 것처럼 탭을 나누어서 구현하였으니 이는 문제가 아닐 수 있습니다.그러나 하기의 사진은 정확한 예시는 아닐 수 있으나 내 팔로워들 중 내 팔로잉 여부를 확인할 수 있는 페이지를 구현하고 싶습니다.인스타 팔로워 페이지인스타 팔로잉 페이지 따라서 팔로우하지 않는 목록 페이지를 유저 목록들이 모두 나열되면서 눈으로 팔로우 여부를 확인할 수 있는 페이지로 구현하고자 합니다. 하기는 현재 구현한 목록 페이지의 일부 입니다.개인 프로필 페이지에서는 팔로잉 버튼 대신 edit 버튼이 활성화 됩니다.해당 페이지를 구현하기 위해 11장에서 구현한 두 함수를 generic ListView를 상속받은 class 기반 뷰로 구현하였습니다.# views.py @method_decorator(login_required_hx, name="dispatch") class DiscoverListView(ListView): model = User paginate_by = 12 context_object_name="user_list" def get_queryset(self): qs = User.objects.all() user: User = self.request.user follow_relation = self.kwargs.get("follow_relation", False) # url로 부터 받는 인자 match follow_relation: case "following": qs = user.following_user_set.all() case "followed": qs = user.followed_user_set.all() # qs = User.objects.exclude(id__in=user.following_user_set.all()) qs = qs.exclude(id__in=[user.pk]).select_related("profile").prefetch_related("follower_user_set", "following_user_set") query = self.request.GET.get("query", "").strip() if query: qs = qs.filter( Q(username__icontains=query) | Q(full_name__icontains=query) | Q(email__icontains=query) ) return qs.order_by("username") def get_template_names(self) -> list[str]: # htmx로 요청이 들어오면 검색바 등 불필요한 위 아래 내용 제거 후 내용만 업데이트 if self.request.htmx: template_name = "accounts/_user_list.html" else: template_name = "accounts/user_list.html" return [template_name] def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) # is_follwer 는 html에서 follow 버튼을 구분하기 위한 인자 # context['is_follower'] = True if self.kwargs.get("follow_relation", False)=="following" else False qs = self.get_queryset() follow_dict = { q.username:self.request.user.is_follower(q) for q in qs } context['follow_dict'] = follow_dict query = self.request.GET.get("query", "").strip() context['query']=query return context여기서 .prefetch_related("follower_user_set", "following_user_set") 을 통해 모델에서 구현한 팔로워와 팔로잉 유저 수를 불러오는 property를 templates에서 호출할 때 N+1 문제를 해결하고자 하였습니다.<!-- _user_profile_card.html --> {% load static %} <div class="card" style="border-radius: 15px;"> <div class="card-body p-4"> <div class="d-flex"> <div class="flex-shrink-0"> {% if user.profile.avatar %} <img src="{{user.profile.avatar.url}}" alt="{{user}}'s avatar" class="img-fluid" style="width: 180px; border-radius: 10px;"> {% else %} <img src="{% static 'images/profile-icon-design-free-vector.jpg' %}" alt="{{user}}'s avatar" class="img-fluid" style="width: 180px; border-radius: 10px;"> {% endif %} </div> <div class="flex-grow-1 ms-3"> <h5 class="mb-1" style="display:inline">{{ user.full_name }} </h5> {% if user.profile.team %} <h6 class="text-muted" style="display:inline">{{ user.profile.team }}</h6> {% endif %} <p class="mb-1 pb-1">{{ user.email }}</p> <div class="d-flex justify-content-start rounded-3 p-2 mb-2 bg-body-tertiary"> <div> <p class="small text-muted mb-1">Data</p> <p class="mb-0">TDA</p> </div> <div class="px-3"> <p class="small text-muted mb-1">Followers</p> <p class="mb-0">{{user.follower_count}}</p> </div> <div> <p class="small text-muted mb-1">Following</p> <p class="mb-0">{{user.following_count}}</p> </div> </div> <div class="d-flex pt-1"> {% if request.user == user %} <a href="{% url 'accounts:profile_edit' %}" class="btn btn-outline-primary btn-sm"> <i class="bi bi-pencil-square"></i> 프로필 수정 </a> {% else %} {% comment %} {% include "accounts/_user_follow.html" with username=user.username%} {% endcomment %} {% include "accounts/_user_follow.html" with is_follower=follow_dict.user.username username=user.username%} {% endif %} </div> </div> </div> </div> </div>프로필 카드 내에서 팔로워와 팔로잉 수를 보여주기 위해 접근한 제 방식이 맞는지가 궁금합니다. models.py에서 구현한 follower_count 또는 following_count를 template에서 호출하는 방식이 일반적인 접근 방식인가요?그 다음 제가 위에서 구현하고자 한 유저별 팔로우 여부를 get_context_data에서 follow_dict 라는 변수명으로 저장하여 하기와 같이 template에 넘겨주었습니다.<!--user_follow.html--> {% include "core/_messages_as_event.html" %} {% load keyvalue %} {% if follow_dict|keyvalue:username %} <a href="#" hx-post="{% url 'accounts:user_unfollow' username %}" hx-swap="outerHTML" class="btn btn-sm btn-primary"> <i class="bi bi-person-check-fill"></i> 팔로잉 중 </a> {% else %} <a href="#" hx-post="{% url 'accounts:user_follow' username %}" hx-swap="outerHTML" class="btn btn-sm btn-secondary"> <i class="bi bi-person-add"></i> 팔로잉 하기 </a> {% endif %}dictionary 키 값으로 변수를 입력하는 것이 django template에서 지원되지 않기 때문에 하기의 함수를 등록하여 활용하였습니다.register = template.Library() @register.filter def keyvalue(dict, key): return dict[key]결과물은 구현한 페이지처럼 잘 보여지지만, 두 가지 문제가 존재합니다.확실치 않지만 하기의 코드에서 N+1 오류가 발생하는 것으로 보입니다.follow_dict = { q.username:self.request.user.is_follower(q) for q in qs }팔로잉 혹은 언팔로잉 요청 시 500 서버 에러가 발생합니다. 아마도 follow_dict가 요청 시에 업데이트 되지 않아 발생하는 오류로 보입니다. 이러한 점 때문에 인스타그램에서도 따로 탭을 두어서 관리하는가 싶기도 합니다만 이를 해결할 방법이 있을까요?어렵다면 팔로워 목록에서 내가 팔로잉 하는지 여부를 표기하는 인스타그램 페이지는 어떻게 구현해야 할까요?
-
미해결빅데이터 분석기사 시험 실기(Python)
10강 연습문제
1) X_train, X_test, y_train, y_test = train_test_split (df.iloc[:, 1:], df['survived'], test_size = 0.2, random_state = 42, stratify = df['survived'])로 되어야 하는거 아닌가요? 연습문제에서 df만 하셨는데, 그렇게 하면 이미 답이 변수에 포함되어있어서 정확도가 1로 나옵니다. 2) 전처리 다 하고나서 저 train_test_split를 수행해도 되나요? 전처리 할 때 X_train, X_test 두번씩 꼭 해줘야 하는게 번거롭고 실수가 날 것 같아서요.
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
글로정리된 섹션문의
글로만 정리된 섹션은 pdf 제공안될까요?핸드폰 화면으로 수강중이라 해당내용을 보기엔한눈에 들어오지 않아 학습이 좀 어렵습니다.프린트물로 보려고 해도 해당페이지는 1페이지만 인쇄되기 때문에 파일로 모아서 올려주시면 학습에 도움이 될 것 같습니다.
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
혹시 현재 제어중인 hwpx파일의 xml을 불러올 수 있을까요?
★새로 연 빈 문서의 xml을 불러오는 방법만 알고싶습니다.★ 기존문서는 zip -> sele..?0.xml을 열면 되서 상관없는데,저장되지않은 새 문서는 어떻게 하는지 궁금하네요 ㅎㅎ -> 이걸로 해결했습니다.hwp.GetTextFile(Format="HWPML2X", option="") # 이외 추가질문입니다. 이번주 목요일 5기 강사로 가시는데, 아쉽게도 신청을 못했네요 ㅠㅠ 역시 다음 기회를 봐야겠죠?
-
미해결파이썬으로 영화 예매 오픈 알리미 만들기
텔레그램 API가 업데이트 되면서 이 코드로는 chat_id를 확인할 수 없습니다.
import telegramimport asynciobot = telegram.Bot(token = '~~~') async def main(): updates = await bot.getUpdates() # getUpdates() 앞에 await를 추가 for i in updates: print(i) # asyncio 이벤트 루프에서 비동기 함수 실행asyncio.run(main()) 이렇게 해야 확인될 겁니다.
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
수업자료 문의
안녕하세요 수업자료 관련하여 문의드립니다. 수업자료중 강의에서 문제들만 있고 프로그래밍언어 이론부분은 따로 내용이 없는거 같네요 시간은 촉박한데 필기하면서 하려니 시간이 많이 소모되어 이론부분도 같이 업로드 해주시면 감사하겠습니다. 만들기가 귀찮으시다면 영상에 사용하는 화면을 pdf로 따서 바로 올려주셔도 좋을것 같아요
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
27분17초 a[1]인 경우
문제가 str = str + a[1] 인 경우에 답이 SSeoul 인가요??
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
파이썬print 사용법 New2023에서
강의 차례대로 들었는데New2023 시작하자마자 나오는"참고 : escape코드" 는 어디에서 설명해주신건가요?슬러시(/)가 아니라 방향이 반대인데.. 뭔지 모르겠어요제가 중간에 놓친건가요
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
질문
15분대 문제 초기 설정 a,b=1 sum=0 으로 시작While문 1~5까지 if 문 b가 짝수이면 sum+b, 아닐시 sum-b 계산 후 a증감 b+2 계산으로 해석했습니다 그래서 a=1 홀수 sum-b 계산 sum=-1, b=3후에 a증감 a=2a=2 짝수 sum+b 계산 sum=2, b=5a=3 홀수 sum=-3 ,b=7a=4 짝수 sum=4, b=9a=5 홀수 sum=-5, b=11계산 후 a=6, b=11로 while문 조건에 맞지않아서 빠져나오게 되면 sum은 -5아닌가요???
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
2023 2회 20분 문제
2023 2회 20분경 문제 오류 찾기요kim을 넣어서 public person(string val)으로 간다까진 이해했는데요. 거기로 가면 public person(string val)부터 시작이 아니라 위인 private string name부터 시작인가요?그래서 private string name은 static string get()을 부르는 함수인가요????ㅠㅠㅠ연결 고리를 모르겟어요 그리고 return 반환에서 오류가 나서 7 정도가 오류 위치라고 하신건가요?
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
학습자료 통합본
수업자료 PDF 통합본 언제쯤 나오나요? 이제 한 달이 채 안 남았네요ㅠㅠ
-
해결됨코딩테스트 [ ALL IN ONE ]
노션이 뭐죠??
그냥 구글폼에 제 메일주소 eovnfjfpa@naver.com으로 교재 신청했는데 아직 안와서요교재 좀 부탁드릴게요 노션이 뭔지 아무 설명이 없는데 메일로는 강의 교재가 안와서 문의드려요
-
미해결빅데이터 분석기사 시험 실기(Python)
VotingClassifier Hard 사용
Hard VotingClassifier 을 사용하면 여러 모델이 내놓은 예측값 중에 가장 많이 득표 한 값을 최종 예측값으로 내놓는다는 것으로 이해하고 있는데요, 2개의 모델로만 했을 때, 두개의 모델이 다른 값을 낼 때는 어떤 값을 최종 예측값으로 내놓는 것인지2개의 모델로 하는게 의미가 있는것인지 궁금합니다. 제가 이해를 잘못하고 있다면 Hard VotingClassifier 에 대해서 조금만 더 설명해주시면 감사드리겠습니다.
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
1912번 DP테이블 N에서 끝나는, N까지 살펴 봤을 때 질문입니다.
안녕하세요 강의 듣다가 궁금한 점이 생겨서 질문 드립니다. DP 테이블을 생성할 때, N에서 끝나는, N까지 살펴봤을 때 로 보통 접근한다고 하셨는데, 모든 DP풀이에 해봄직한 생각이라고 보면 될까요? 테이블을 세우는게 뭔가 제 멋대로 세우는 것 같아서 어렵게 느껴지는 것 같습니다.그리고 knapsack 같은 DP세우는게 쉽지 않던데, 어려운 DP문제들은 어떤 부분을 주목해서 DP테이블을 세우려고 집중하면 될까요?풀면서 느끼는 점이 DP식을 잘못 세우면 완탐처럼 세우게 되는 것 같습니다.
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
업캐스팅 질문입니다
11분 07초A a = new A();A b = new B();위 두개는 이렇게 생성하겠다 라는 생성만 하는 문장이지 않나요?b.paint(); 는 출력을 하는 문장이므로 실행될때 classA의 기본생성자인 Contruct~와 classB의 기본생성자인 Contruct~가 출력되고 난후 B()내의 paint()가 실행되는건 이해가 갑니다.근데 b.paint(); 가 실행되기 전에 A a = new A();를 선언함으로서 즉시 classA의 Contructor ~가 출력 되는 것이 이해되지 않습니다ㅠㅠ
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
switch-case 6분 문제 k관련 질문입니다.
int i = 3 이어서 3 - 10 을 하고 마지막에 --k가 아닌 k--를 계산하는 이유는 뭘까요?k-- 이면 계산되지 않은 -7이 되어야 하지 않을까 생각했는데 -8이 답이라 하셔서 질문 남깁니다.
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
C언어 질문
강사님, 안녕하세요. 강의 잘 듣고 있습니다. 강의를 듣다 궁금한 점이 생겨 질문 남깁니다. C언어 - 함수 부분(31:18) 홀수인지, 짝수인지 판별하기 문제 [오답]10는 짝수입니다. 13는 짝수입니다.01는 홀수입니다. 1는 홀수입니다. (0) [정답]10는 짝수입니다. 13는 짝수입니다.1는 홀수입니다. (0) 저는 위에 제시한 오답처럼 풀이를 진행하여 해당 문제를 틀렸습니다. 제 풀이는 함수 정의 부분에 있는 첫 번째 if문에서 retrun 0을 반환(print)하고 그 아래에 있는 if문에 있는 else까지 실행시켜 오답이 되었습니다. 1) if 문 질문isEven 함수 정의 부분에서 첫 번째 if문만 실행되고, 두 번째 if문은 실행되지 않는지 궁금합니다. 2) return, printf 질문 다른 문제에서도 이러한 식으로 오답을 작성한 적이 있는데, return과 print의 차이에 대해 설명해주시면 좋겠습니다. (혹시 예시를 알려주실 수 있을까요?) 교안 관련 질문python 변수와 출력 예제 부분 pdf에 '\n'이 빠져있는 것 같습니다. 강의에는 잘 반영되어 있는데 pdf에는 빠져있는 것 같아서요! (이미 수정하셨을 수도 있을 것 같습니다. ㅎㅎ 확인 부탁드려요)실습 관련 환경 설정가볍게 실습 코드를 돌려보고 싶은데 어느 환경에서 하는 것이 좋을까요? 코랩으로 시도해보았으나 좀 불편한 것 같아 보통 어느 환경에서 실습을 진행하는지 여쭙고 싶습니다!
-
미해결빅데이터 분석기사 시험 실기(Python)
구름IDE 실행 도움 요청
구름아이디에서 연습문제 실행하면 이런 오류가 뜨는데 도움 부탁드립니다.
-
미해결입문자를 위한 코딩테스트 핵심(이론과 문제풀이) [Python]
[문제3번] 두수의 합 : O(nlogn)
제가 작성한 코드도 O(nlogn)에 충족하는지 궁금합니다 감사합니다def solution(nums, target): answer = [0]*2 length = len(nums) nums = sorted(nums) left = 0 right = length-1 for i in range(length): if target > (nums[left] + nums[right]): left += 1 if target < (nums[left] + nums[right]): right -= 1 if target == (nums[left] + nums[right]): answer = [nums[left], nums[right]] return answer
-
미해결프로그래밍 시작하기 : 도전! 45가지 파이썬 기초 문법 실습 (Inflearn Original)
glob.glob1() <-- 질문
import glob png_list1 = glob.glob1('./source/42-1/', '*.png') print(len(png_list1)) png_list2 = glob.glob1('./source/42-1/', '*py') print(len(png_list2))여기에서 glob을 쓸때요. 왜 glob1() 에 1을 붙였나요?검색해보니 glob1() 이라는건 없다고 나와서요 1. 질문하시기 전 유사한 질문이 있는지 검색을 먼저 부탁드려요!전체 소스코드를 올려주시면 답변을 빠르게 드릴 수 있어요!(글보다 빨라요)기초적인 질문은 이미 검색해보시면 사례가 많이 있어요!문법적인 궁금증은 먼저 구글 검색을 통해서 레퍼런스(메뉴얼)을 읽어보시고 해결하시면 실력 향상 100%너무 잦은 질문이나 강의와 관련 없는 질문은 가급적 자제 부탁드려요 ㅠ.ㅠ2. 답변이 다소 늦을 수도 있어요!일반적인 근무시간(9 TO 6) 안에는 답변을 드리도록 노력하고 있어요!문법적인 질문은 먼저 검색을 통해 해결해 보세요!정확하게 질문해주시면 정확한 답변을 받으실 수 있어요!늦더라도 꼭 응답은 드리고 있으니, 먼저 검색을 통해 해결해 보세요!