묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결우리를 위한 프로그래밍 : 파이썬 중급 (Inflearn Original)
__mul__ 백터 * 숫지, 백터 * 백터 처리
곱셈 처리 중, 백터*백터와 백터*숫자를 어떻게 하나의 def에 담을 수 있을까 생각하다가 아래와 같이 처리하니 되네요.이렇게 처리하는게 일반적인지 궁금하여 문의 드립니다. def __mul__(self, other): print(type(other)) if (type(other)) == Vector: return Vector(self._x * other._x , self._y * other._y) else: return Vector(self._x other, self._y other) print(v1*v2) #백터 * 백터print(v1*2) # 백타 * 숫자
-
미해결파이썬/장고로 결제 시작하기 (Feat. 아임포트) - 기본편
배포환경과 개발환경 패키지 관리, 도커환경 디버깅 팁이 있을까요?
개발용 PC가 리눅스라면 괜찮은데,윈도우에서 개발한다면 배포시에 보통 리눅스에 배포하게 될텐데..그 경우 개발환경과 배포환경이 다름으로 생기는 패키지 관리 문제가 생기는데 강사님은 어떻게 해결하시나요..? cookiecutter-django로 프로젝트 세팅을 간소화 하려고 하는데, 도커에서 서비스가 돌아가다보니 디버깅 하기가 까다롭네요.. pycharm에서는 보통 어떻게 하나요? vscode에서는 debugpy를 제가 수동으로 설정해서 디버깅 처리를 했는데, 이 방법은 너무 번거롭더라구요..요지는 윈도우 개발환경에서 도커 컨테이너에서 돌아가고 있는 코드를 어떻게 디버깅 하느냐에 대한 질문입니다..좋은 강의 제공해주셔서 감사드리며, 강의 주제와는 좀 벗어나지만 답변 주시면 개발하는데 많은 도움 될 것 같습니다.
-
해결됨실리콘밸리 엔지니어가 가르치는 파이썬 장고 웹프로그래밍
reverse vs reverse_lazy 사용 이유와 차이점을 이해하지 못 했습니다.
reverse 와 reverse_lazy가 호출 즉시 평가한다. 지연평가한다. 여기서 평가가 의미하는게 뭔지 잘 모르겠습니다. 그리고 form_valid는 어디서 호출이 되는건가요. 전반적으로 이해가 잘 안되어 질문에 두서가 없습니다. 죄송합니다.
-
해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)
views.py 에대해
여기 구간에서 저 줄만 빨간 오류로 뜹니다.에겟 파일을 못 읽어서 뜨는건갈까요?인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)
11-10 clean_email(self) 메소드의 동작 방식에 대해서 궁금합니다.
이진석 강사님 안녕하세요,올려주신 Django 강의를 차근 차근 따라가며 즐겁게 학습하고 있습니다. 작성해주신 코드에 대한 동작 원리를 이해하려고노력하면서 수강하고 있습니다. 그 과정에서 작성하신 코드의 동작 원리에 관련해서 궁금한 게 있어서 이렇게 질문 드려요 🙂11-10 강의에서 SignupForm 모델 폼에서 clean_email(self) 메서드를 정의하여 입력 받은 email 값에 대한 유일성을 검사하는 코드 관련해서 궁금한 점이 있습니다.정의한 clean_email(self) 메서드는 언제 django 내부에서 호출되는지 궁금합니다. 폼의 is_valid() 메서드를 통과한 이후에 self.cleaned_data 인스턴스 변수에 사전으로 값이 담긴 이후에 호출되는 걸로 이해했는데 맞을까요?return 값으로 email 변수 하나만 넘겨주게 구현이 되어 있는데요. email 변수만 반환하는데, email 변수에 담긴 cleaned_data 인스턴스 변수 값이 반환 된 이후에 Django 내부적으로 어떻게 처리 되는지 궁금합니다.UserCreationForm 클래스에 clean_username(self)가 정의되어 있던데요. def clean_{field_name}(self) 의 형태로 제가 원하는 필드에 대해서 추가로 유효성 검증 로직을 구현하고 싶을 경우, 위와 같은 형태로 메서드를 추가로 정의해서 코드를 구현하면 되는 거로 이해했는데 제가 제대로 이해한 건지 궁금합니다.감사합니다!
-
해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)
03-03 검색지원에 대해
검색어를 입력해주세요 검색창이 너무 작아요.. 이런식으로요... 왜이런거져..인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)
01-03 검색지원에 대해
스크립트 문자 그대로 form 썼는데 서버에 새로고침해도 영상과 달리 검색어가 안내려옵니당그리고 저도 진석님처럼 코드가 색깔별로 나오게끔 하고싶은데 그건 어떻게 하신건가요..?인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
해결됨Do It! 장고+부트스트랩: 파이썬 웹개발의 정석
url pattern관련 문의
안녕하세요. urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 이런식으로 url패턴을 만들어주면 이렇게 (^media/(?P<path>.*)$)패턴이 생기는거 같고 그 다음 views.py에서 해당 url을 처리할 로직을 만들어야하는걸로 아는데.. 이 경우는 어째서 예외인가요?
-
해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)
mydjango.py 관해서
이렇게 작성하고 엔터 눌러도 html 파일 생성이 되지 않습니다.그리고 강의 여기까지 듣고있긴한데 속도를 몇으로 해두고 봐야할지 모르겠어요..뭔가 너무 빠른 느낌 ㅠㅠ..혹시 오픈채팅 파이썬 사랑방 비밀번호도 알수있을까요 ㅠㅠ 모르면 거기에다가 또 물어볼까해서 ..
-
해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)
궁금한게 있습니다. VSCODE and 파이참
인텔리제이 파이참은 어느정도 다룰잘아는데VSCode는 다룰줄 모릅니당.. 환경설정 vscode까지는 해보긴했는데 혹시 파이참으로 이 강의 쭈욱 들으면서 해도 상관이 없을까요?인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)
도커 설치 베타버전으로 다운받아야하는걸까요?
도커 설치 베타버전으로 다운받아야하는걸까요?인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결파이썬/장고로 결제 시작하기 (Feat. 아임포트) - 기본편
8강 주문 모델 설계에서 따로 ManyToMany 관계를 위한 모델을 선언해준 이유?
class Order(models.Model): ... products = models.ManyToManyField( Product, blank=False, ) ...그럴 가능성은 드물지만 Product 수량은 1개로만 주문 가능하고 상품이름과 가격이 변동 불가하다고 하였을 때( 1개 주문시, 품절 되는 상품)는 별도의 OrderedProduct 클래스 없이 위와 같이 구현해도 무방한가요?class OrderedProduct(models.Model): order = models.ForeignKey( Order, on_delete=models.CASCADE, db_constraint=False, ) product = models.ForeignKey( Product, on_delete=models.CASCADE, db_constraint=False, ) ...따로 OrderedProduct 클래스에 FK로 order와 product를 두신건 이름/가격 정보의 변경 가능성, 2개이상의 수량 선택 문제를 해결하기 위함과 향후에 추가적인 모델의 유연성 때문에 이렇게 설계 해두신걸까요?
-
미해결파이썬/장고로 결제 시작하기 (Feat. 아임포트) - 기본편
product model에서 category는 FK로 주셨는데, status는 왜 chocies로 주신 이유?
category는 동적으로 추가할 가능성이 있지만,status는 상태가 추가될 가능성이 드물기 때문에 이렇게 모델 설계를 하신게 맞을까요?
-
해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)
강의 PDF 파일 문의
강의 PDF 파일이 제공된다고 대시보드에 써있는데 혹시 어디서 다운 받을 수 있을까요?강의를 다 보고 나서 PDF파일로 복습하려고 하는데 어디 있는지 못찾겠습니다.
-
해결됨파이썬/장고 웹서비스 개발 완벽 가이드 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가 요청 시에 업데이트 되지 않아 발생하는 오류로 보입니다. 이러한 점 때문에 인스타그램에서도 따로 탭을 두어서 관리하는가 싶기도 합니다만 이를 해결할 방법이 있을까요?어렵다면 팔로워 목록에서 내가 팔로잉 하는지 여부를 표기하는 인스타그램 페이지는 어떻게 구현해야 할까요?
-
미해결실전! Django 활용
urls.py 파일에 작성한 코드 분리 여부
안녕하세요. 정말 강의 재밌게 잘 듣고 있습니다.들으면서 궁금한 부분이 있어 질문드립니다./orders API를 예시로 들었을 때, urls.py 파일에 모든 코드가 작성되는데, 쿼리나 비즈니스 로직을 따로 분리하는 방식은 파이썬 프레임워크에서는 잘 사용하지 않는 방법인가요? 일반적으로 스프링에서는 service와 respository 클래스로 해당 코드를 분리하는 편이어서 이 차이점이 궁금합니다.
-
해결됨실리콘밸리 엔지니어가 가르치는 파이썬 장고 웹프로그래밍
urls.py에 라우팅 하는 부분에서요.
config/urls.py가 있고, 앱을 만든다면 apps/urls.py가 꼭 필요한가요? config/urls.py 안에 다 넣을 수 있지 않을까요?
-
미해결파이썬/장고로 결제 시작하기 (Feat. 아임포트) - 기본편
선생님 from iamport import Iamport 에서 에러가 생깁니다.
Cannot find reference 'Iamport' in '__init__.py' 라면서 참조를 못합니다ㅜ파이참 쓰고 있고 init_py 파일에는이 소스가 끝입니다 ㅜ 나머지 client.py, client.pyi에는 Iamport가 클래스로 정의되어 있는데 왜 이런지 모르겠습니다ㅜ
-
미해결파이썬/장고로 결제 시작하기 (Feat. 아임포트) - 기본편
db_index=True로 설정하는 이유
빈번하게 해당 필드의 값을 기준으로 select query가 일어날 만한 조건이 된다고 판단하셔서db_index=True로 해주신걸까요?ex) 특별한 결제 상태의 payment만 조회Payment 모델 만드실 때 특별한 설명이 없으셔서, 질문 남겨요.
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)
안녕하세요 모든 회차의 동영상이 나오지않고 다음과 같이 화면이 출력됩니다.
소리는 나오는데 영상 재생에 문제가 있는것 같아요. 확인 부탁드립니다.인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.