묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)
mydjango.py 관해서
이렇게 작성하고 엔터 눌러도 html 파일 생성이 되지 않습니다.그리고 강의 여기까지 듣고있긴한데 속도를 몇으로 해두고 봐야할지 모르겠어요..뭔가 너무 빠른 느낌 ㅠㅠ..혹시 오픈채팅 파이썬 사랑방 비밀번호도 알수있을까요 ㅠㅠ 모르면 거기에다가 또 물어볼까해서 ..
-
해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)
궁금한게 있습니다. VSCODE and 파이참
인텔리제이 파이참은 어느정도 다룰잘아는데VSCode는 다룰줄 모릅니당.. 환경설정 vscode까지는 해보긴했는데 혹시 파이참으로 이 강의 쭈욱 들으면서 해도 상관이 없을까요?인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)
도커 설치 베타버전으로 다운받아야하는걸까요?
도커 설치 베타버전으로 다운받아야하는걸까요?인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
해결됨생산성을 향상시키는 스프링부트 기반의 API 템플릿 프로젝트 구현
토큰발행시 500 INTERNAL_SERVER_ERROR
{errorCode: "500 INTERNAL_SERVER_ERROR",errorMessage: "[405 Method Not Allowed] during [POST] to [https://kauth.kakako.com/oauth/token?code=fTm_uxdiNTjsBlzeAOwQfGPMqg6kR0ouuBK8VkuKSBohWDx0skqriAAAAAQKPXObAAABkkMviG3MISgqRbFCUQ&grant_type=authorization_code&client_secret=kGuBVOPHxDwPJpEOJBDo5TtagIjOGLri&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2Foauth%2Fkakao%2Fcallback&client_id=8fbba150815fc1d671141795f363410a] [KakaoTokenClient#requestKakaoToken(String,Request)]: [<html> <head><title>405 Not Allowed</title></head> <body> <center><h1>405 Not Allowed</h1></center> <hr><center>openresty</center> </body> </html> ]"} 해당 오류에 대한 원인을 찾지 못하고있습니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part6: 웹 서버
자바스크립트 내용이 나오나요?
마지막으로 하나 더 질문이 있습니다. 해당 강의에서 자바스크립트 기초 문법 같은 자바스크립트에 대한 내용이 나오나요? 나오면 어느정도 나올까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part6: 웹 서버
웹 사이트 보안
이 강의를 보고 웹 사이트를 만들어 보려는데 보안에 관한 내용도 나올까요? 안 나온다면 추가적으로 추천하는 강의나 책이 있을까요? 그리고 안 나온다면 추가적으로 공부해야될 건 많겠지만 예를 들어 어떤게 있을까요? 보안 부분이 나온다면 그것만 들어도 되는 건가요?
-
해결됨파이썬/장고 웹서비스 개발 완벽 가이드 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가 요청 시에 업데이트 되지 않아 발생하는 오류로 보입니다. 이러한 점 때문에 인스타그램에서도 따로 탭을 두어서 관리하는가 싶기도 합니다만 이를 해결할 방법이 있을까요?어렵다면 팔로워 목록에서 내가 팔로잉 하는지 여부를 표기하는 인스타그램 페이지는 어떻게 구현해야 할까요?
-
미해결생산성을 향상시키는 스프링부트 기반의 API 템플릿 프로젝트 구현
oauth 회원가입 시 필수 추가 정보는 어떤 식으로 받으시나요?
안녕하세요! 우선 강의 정말 잘 보고있습니다. 강의를 들으며 프로젝트에 적용 중인데 궁금한 점이 있어 질문드립니다.oauth 회원가입 시 리소스 서버에서 받은 수 없는 필수 추가 정보는 어떤 식으로 받으시나요?예: 사용자 혈액형, 학교 등.. (회원가입에 필수 정보라 가정)
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)
안녕하세요 모든 회차의 동영상이 나오지않고 다음과 같이 화면이 출력됩니다.
소리는 나오는데 영상 재생에 문제가 있는것 같아요. 확인 부탁드립니다.인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결R언어 프로그래밍과 데이터분석
p.35 파일 불러오기 질문있습니다.
안녕하세요. 교재를 구매하여 공부하다 질문이 있어 이렇게 남깁니다.p.35 하단 부분에 " 1 )R 파일 불러오기 " 에서 강의 사이트에서 제공되고 있는 ch1_2_2_1.R 파일을 내려 받으라고 하셨는데 어디서 저 파일을 찾아올 수 있는지 모르겠습니다. 감사합니다.
-
미해결(2024 최신 업데이트)리액트 : 프론트엔드 개발자로 가는 마지막 단계
소스코드는 어디서 받을 수 있는지요...
소스코드는 어디서 받을 수있는지요..
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)
강의 제목에는 리액트가 들어가있는데 리액트 내용은 좀 부실한거 같아요.
강의 제목에는 리액트가 들어가있는데 리액트 내용은 좀 부실한거 같아요. 오히려 htmlx가 더 많아요~~~ 리액트로도 다양한 예제를 만들어주셨으면 합니다.
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)
로그아웃 시 메서드 거절이 발생합니다.
auth LoginView/LogoutView에 success_url_allowed_hosts 설정 추가하여, 로그인/로그아웃 후에 지정 호스트로의 이동 허용현재 로그인/로그아웃후 지정 호스트로 이동을 허용하는 부분을 실습하고 있는데 막히는부분이 있어서 질문 드립니다. 이부분 코드를 붙여넣고 실행하였더니 로그아웃 부분에서 아래와 같은 에러가 발생하였습니다. (프로필 페이지로 이동은 잘 됩니다.)찾아보니 GET 메서드가 거절된 것같은데, 이전 강의에서 장고에서 과거에는 GET으로 받았으나, 이제는 POST 요청만 허용한다는 내용을 들은적이 있었던것같은데, 그것과 관련된 것인지 궁금합니다. 다른 분들은 잘되셔서 넘어가셨을텐데, 저가 잘못된것 같긴한데 혹시나해서 여쭈어봅니다.아래는 로그아웃 구현된 부분입니다.
-
해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)
11-15) 프로필 수정에서 이미지 저장 시 문제
질문을 온전히 이해할 수 있도록, 모든 맥락을 전달해주세요.질문은 질문자가 번거로워야 보다 좋은 답변을 얻으실 수 있습니다.시행착오를 알려주시면 곧바로 원하는 문제에 집중할 수 있습니다.오류 메시지는 일부만 알려주시기보다 전체 오류 메시지를 캡처해서 주시면, 오류 파악에 도움이 됩니다. 당신의 파이썬/장고 페이스메이커가 되겠습니다. ;-)인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 11-15 강의에서 구현한 프로필 수정 폼에서 이미지를 올린 경우, 다시 프로필 수정 페이지에 들어가면 정상적으로 이전에 등록된 이미지가 현재란에 보여집니다. 이렇게 구현된 모델은 문제가 몇 가지 있는데요.수정하지 않고 저장을 누를 경우 이전 강의에서 교육하신 내용처럼 접미사가 계속 바뀌어가면서 같은 내용의 파일이 spamming 되는 문제가 발생합니다.우리가 만약 프로필에 다른 항목이 추가된다면, 다른 항목만 수정하지 않고 나가는 유저가 있을텐데 해당 문제를 해결하려면 어떻게 해야할까요?수정 혹은 취소 체크 박스를 선택하여 삭제를 할 경우 여전히 경로 안에 파일이 남아 있습니다. signal을 이용하면 될 것 같은데, 하기와 같은 방법을 생각해 볼 수 있을까요?@receiver(pre_save, sender=Profile) def edit_delete_on_profile(instance=Profile, **kwargs): instance.avatar.delete(save=False)수업 내용과는 상관없지만, 기본 제공되는 이미지 업로드 양식이 어색합니다. 특히 취소 체크 박스를 체크하여 제거하는 방식은 너무 어색한데요. 더 좋은게 없을까요? 예를들어 아래는 네이버 '치지직' 에서 프로필 수정 양식입니다.
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)
가상환경 활성화 했을때 이름 설정
원래는 강의에서처럼 터미널에서 (venv)가 있어야 할 자리에 mydjango가 있었습니다 그런데 제가 로컬에서 다른 가상환경을 만들고 진행하니 이제 모든 파이참 환경에서 가상환경 설정할 때마다(venv)라고 활성화 되서 나오네요 얼마전엔 가상환경이름을 venv라고 설정해도 각각에 프로젝트에 맞는 이름들이 (django) 이런식으로 등장했는데 어떻게 원래대로 되돌릴 수 있는지 모르겠습니다.프로그램 실행에 지장이 있는건 아니지만 알려주시면 감사하겠습니다.
-
해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)
IP Field와 AccessLog 관련
질문을 온전히 이해할 수 있도록, 모든 맥락을 전달해주세요.질문은 질문자가 번거로워야 보다 좋은 답변을 얻으실 수 있습니다.시행착오를 알려주시면 곧바로 원하는 문제에 집중할 수 있습니다.오류 메시지는 일부만 알려주시기보다 전체 오류 메시지를 캡처해서 주시면, 오류 파악에 도움이 됩니다. 당신의 파이썬/장고 페이스메이커가 되겠습니다. ;-)인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. Q17-01 02 강의에서 ipv4address custom field를 생성하셨는데요8-20 강의 같이 이후에는 그냥 Django GenericIPAddressField를 사용셨습니다.7-01 02강의는 그냥 custom 필드를 보여주기 위한 예시이고 그냥 장고에서 제공해주는 IP 필드를 사용하면 되는건가요? 아니면 차이점이 존재하는 건가요? Q2제가 제작한 사이트의 사용량 집계를 위해 로그를 얻으려고 합니다.class AccessLog(models.Model): request = models.URLField() time = models.DateTimeField(auto_now=True) user = models.ForeignKey(User, on_delete=models.CASCADE, null=True) ip = models.GenericIPAddressField()상기와 같은 모델을 작성하여 request가 client로 날라올 때마다 db에 쌓아나가는게 맞을까요? 아니라면 logger를 이용하는게 맞을까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part6: 웹 서버
blazor실습 시 바인딩 관련 및 버튼이 동작하지 않는 이슈가 있으면? ( .NET 8.0 기준 )
구글링 해보니, 다음과 같은 글이 있었네요...Net 8.0기준으로 정적 렌더링이 기본 설정인 경우에는 Blazor 컴포넌트의 인터랙티비티가 자동으로 연결되지 않습니다.App.razor의 body영역에 있는 Routes부분에 @rendermode=RenderMode.InteractiveServer 이 코드를 추가해줍니다. 해당 부분 코드 : <Routes @rendermode=RenderMode.InteractiveServer /> 출처 : https://stackoverflow.com/questions/58196812/blazor-onclick-event-is-not-triggered
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)
커스텀 모델 생성 시 에러 발생 이유
07-27 관계를 표현하는 모델 필드 - models.ManyToManyField 커스텀 관계 모델로 이전하기 (실습) 2분 18초쯤에 오류 예시를 보여주셨는데 혹시 에러가 나는 이유가 뭔지 알 수 있을까요? 기존 M2M 필드에 through를 바로 추가할 수 없기 때문인가요?
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)
abstract=True를 사용한 상속 시 컬럼 순서
07-07 강의에서 상속을 써서 중복 컬럼을 제거하는데요상속을 먼저 받기 때문에 날짜 컬럼 순서가 앞에 위치합니다.순서를 뒤로 바꾸려면 어떻게 해야하나요?