묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실리콘밸리 엔지니어가 가르치는 파이썬 장고 웹프로그래밍
(wsl2-ubuntu에) docker/django 설치 방법과 환경설정이 강의화면에 나오지 않아 헤매고 있습니다. ㅠㅜ
(wsl2-ubuntu에) docker/django 설치 방법과 환경설정이 강의화면에 나오지 않아 헤매고 있습니다. ㅠㅜ
-
해결됨실리콘밸리 엔지니어가 가르치는 파이썬 장고 웹프로그래밍
장고 모델 임포트
안녕하세요, 수업 다시 보면서 복습하고 있습니다. 기초부터 고급까지 파이썬 강의도 보면서 공부하고 있는데 클래스 임포트 관련해서 궁금한 점이 있습니다.from django.db import models 이게 잘 이해가 안가요 ㅠㅠ 기초 파이썬 강의에서 from 뒤에는 파일이나 모듈, import 뒤에는 클래스나 변수가 온다고 이해했는데요. models가 일단 클래스나 변수는 아닌 것 같고, 파일 같은데 from django.db import models 이렇게 쓰는 이유가 뭘까요..?import django.db.models 이렇게 쓸 수도 있나요? 답변 해주시면 감사하게 공부하도록 하겠습니다! ㅎㅎ
-
미해결실리콘밸리 엔지니어가 가르치는 파이썬 장고 웹프로그래밍
경로 관련 질문
<Django Template(템플릿)에 대한 소개>에서 하얀색 칠한 부분이 views.py에서 작성한 코드이기 때문에 경로상 templates/polls/main.html이 맞는것이 아닌지요?근데 그렇게 돌려보니 error가 뜨더라구요경로가 templates없이 지정되었음에도 불구하고 에러가 나지 않는 이유가 궁금합니다.
-
해결됨실리콘밸리 엔지니어가 가르치는 파이썬 장고 웹프로그래밍
docker compose up과정에서 module not found error발생
docker compose up에서 아래와 같은 오류가 발생하였습니다. member 라는 모듈을 찾을 수 없다고 하는데 어떻게 해야될지 문의드립니다. +app/app/urls.py에서 member가 언급된 path를 주석처리하니 compose up이 돌아가긴 했습니다.
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
is_valid()과정에서 validated_data에 데이터가 유실됩니다
안녕하세요? 이렇게 빨리 질문을 다시 드릴 줄 몰랐네요 ㅠㅠ is_valid()과정에서 데이터가 유실되는데, 도무지 이유를 모르겠어서 질문을 드립니다. view 부분은 다음과 같습니다 (편의를 위해data를 그냥 따로 만들었습니다. def perform_create(self, serializer): data = { 'delivery_location': 'test_location', 'delivery_date': '2022-10-10', 'orderedproducts': [ {'product_id': 3, 'count': 3}, {'product_id': 4, 'count': 3} ], } serializer = self.get_serializer(data=data) serializer.is_valid(raise_exception=True) print(serializer.validated_data) serializer.save() return serializer.data 여기서 print문의 결과로 다음과 같이 출력됩니다.orderedproducts내부에 있어야 할 product_id가 사라져 잇더라구요..아무리 검색해봐도 이유가 나오지 않아서 ㅠㅠ 한번 여쭈어 봅니다. OrderedDict([('delivery_location', 'test_location'), ('delivery_date', datetime.date(2022, 10, 10)), ('orderedproducts', [OrderedDict([('count', 3)]), OrderedDict([('count', 3)])])]) 혹시 몰라 시리얼라이저와 모델을 같이 적습니다. 시리얼라이저는 다음과 같습니다 class OrderedProductSerializer(serializers.ModelSerializer): product_name = serializers.CharField(source='product.product_name',read_only=True) class Meta: model = OrderedProduct fields = [ "product_id","count","product_name" ] class PackageOrderSerializer(serializers.ModelSerializer): orderedproducts = OrderedProductSerializer(many=True) class Meta: model = PackageOrder fields = [ "id","delivery_location","delivery_date","is_packaging", "orderedproducts" ] def create(self,validated_data): print("validated_data : ",validated_data) orderedproducts_data = validated_data.pop('orderedproducts') packageorder = PackageOrder.objects.create(**validated_data) for products_data in orderedproducts_data: OrderedProduct.objects.create(package_order=packageorder,**products_data) return packageorder 모델은 다음과 같습니다 #models.py class OrderedProduct(TimeStampedModel): package_order = models.ForeignKey('PackageOrder',on_delete=models.CASCADE,related_name='orderedproducts') product = models.ForeignKey('products.Product',on_delete=models.CASCADE) count = models.BigIntegerField() class Meta: db_table = 'ordered_products' class PackageOrder(TimeStampedModel): delivery_location = models.CharField(max_length=100) delivery_date = models.DateField() is_packaging = models.CharField(max_length=100, blank=True,null=True) class Meta: db_table = 'package_orders' OrderedProduct 모델이 다른 두개의 테이블을 참조하는 중간테이블처럼 사용되는 게 이유가 아닐까..짐작은 해보고 있습니다.. 정 안되면 body데이터를 pop을 활용해 빼내고 context를 통해 데이터를 전해주는 방식을 사용할까 고민중이긴 한데 정확한 이유는 알고 싶어서 질문 드립니다. 감사합니다~
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
안녕하세요 선생님 DRF 대댓글에 대해서 질문드립니다!!
안녕하세요 선생님 DRF 대댓글에 대해서 질문드리려고 합니다. 제가 원하는 대댓글 구현은 계층형인데요 (물론 요즘은 잘 안쓰는걸로 알고있지만;;) 예를 들어 (reddit이랑 댓글 구현이 정확히 일치합니다!! -> 계층형 댓글로 구현이 되있습니다) 댓글 -대댓글 --대대댓글 --대대댓글 -대댓글 --대대댓글 댓글 -대댓글 -대댓글 댓글 ... 위와 같이 어떠한 포스트글에 댓글, 대댓글 전부 한번에 보이게 구현을 하고 싶은데 보통 대댓글도 결국 댓글이라서 self join하자나요? class Comment(TimestampedModel): author = models.ForeignKey(User, on_delete=models.CASCADE) post = models.ForeignKey(Post, on_delete=models.CASCADE, verbose_name='포스트 제목') message = models.TextField(verbose_name='댓글') parent = models.ForeignKey('self', on_delete=models.CASCADE, null=True) 근데 문제는 pagination이 걸려 있다보니깐 어떠한 댓글에 대댓글, 대대댓글을 저렇게 정렬된 상태로 한번에 가져오는 방법이 떠오르지가 않네요; (댓글에 좋아요도 추가해서 정렬 알고리즘을 추가할 예정입니다) 그래서.. 1. pagination을 풀어서 어떠한 포스트에 댓글을 전부 response하고 클라이언트 단에서 정렬하라고 하는건지? (물론 당연히 DB 부담이 커서 처음엔 이 방법을 전혀 생각하고 있지 않았지만, 한편으로는 댓글은 많아봐야 몇천개라서 커버가 될 수있을까 ? 라는 막연한 생각이드네용) 2. 댓글 하나당 대댓글이 있는지 재귀적으로 요청해서 대댓글이 있으면 가져오고 없으면 넘어가는 식으로 구현? (물론 당연히 이것도 하나의 포스트에 여러번의 DB 요청을 하기 때문에 서버측에서 굉장히 부담이 커서 현실성이 매우 떨어짐) 위 두 방법은 좀 현실성이 떨어져서 좀 더 효과적으로 구현할 수 있는 방법이 있을것같은데 실력과 경험부족으로 떠오르지가 않네요... 혹시 위 처럼 계층형 대댓글을 구현하는데 좋은 로직이나 자료나 솔루션이 있을까요???? (프론트엔드는 코틀린입니다)
-
미해결Django REST Framework 핵심사항
DRF 1:N 참조 테이블 객체 매핑 POST
안녕하세요. 현재 drf 를 사용하여 api 개발을 공부중입니다. 현재 1:n 관계인 두개의 테이블에서 N측 테이블의 데이터를 저장할 때 기존에 존재하던 1측 테이블의 레코드와 관계를 생성하여 매핑하고자 합니다. 이런 저런 방법을 계속 시도하였으나 참조하는 테이블의 객체를 알맞게 매핑하는데 자꾸 실패하여 질문을 남깁니다. class Company(models.Model): company_name = models.CharField(max_length=30) nationality = models.CharField(max_length=20) region = models.CharField(max_length=40) class Recruitment(models.Model): company = models.ForeignKey(Company, on_delete=models.CASCADE) position = models.CharField(max_length=20) reward = models.IntegerField() info = models.TextField() skill = models.CharField(max_length=30) Company 모델과 이를 참조하는 Recruitment 모델입니다 class CompanySerializer(serializers.ModelSerializer): class Meta: model = Company fields = '__all__' class RecruitmentSerializer(serializers.ModelSerializer): company = CompanySerializer() class Meta: model = Recruitment fields = '__all__' depth = 1 각 모델의 serializer입니다, class RecruitmentListView(APIView): def post(self, request): company_obj = Company.objects.get(pk=request.data.get('company')['id']) #1. 참조하는 company 객체를 찾아 새로운 Recruitment 객체를 생성하고, company 객체를 연결지어 serialize한다 #2. RecruitmentSerializer의 is_valid 혹은 다른 메소드를 오버라이딩하여 request를 serializer로 전달하여 저장한다 #기타 등등 if serializer.is_valid(): serializer.save() return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(status=status.HTTP_400_BAD_REQUEST) 공식 문서, 유튜브 영상, 외국 사이트등을 찾아보았지만 기존에 존재하던 테이블을 참조하며 새로운 객체를 저장하는 방법이 있질 않더군요... 혹시 해결 방법을 아시면 답변 부탁드리겠습니다. 참고로 request는 { "company": { "id": 1, "company_name": "company1", "nationality": "korea", "region": "seoul" }, "position": "백엔드", "reward": 100000, "info": "test", "skill": "django" } 이런식으로 생각하고 있습니다
-
미해결
DRF 객체 저장시 nested object 매핑 문제
안녕하세요. 현재 drf 를 사용하여 api 개발을 공부중입니다. 현재 1:n 관계인 두개의 테이블에서 N측 테이블의 데이터를 저장할 때 기존에 존재하던 1측 테이블의 레코드와 관계를 생성하여 매핑하고자 합니다. 이런 저런 방법을 계속 시도하였으나 참조하는 테이블의 객체를 알맞게 매핑하는데 자꾸 실패하여 질문을 남깁니다. class Company(models.Model): company_name = models.CharField(max_length=30) nationality = models.CharField(max_length=20) region = models.CharField(max_length=40) class Recruitment(models.Model): company = models.ForeignKey(Company, on_delete=models.CASCADE) position = models.CharField(max_length=20) reward = models.IntegerField() info = models.TextField() skill = models.CharField(max_length=30) Company 모델과 이를 참조하는 Recruitment 모델입니다 class CompanySerializer(serializers.ModelSerializer): class Meta: model = Company fields = '__all__' class RecruitmentSerializer(serializers.ModelSerializer): company = CompanySerializer() class Meta: model = Recruitment fields = '__all__' depth = 1 각 모델의 serializer입니다, class RecruitmentListView(APIView): def post(self, request): company_obj = Company.objects.get(pk=request.data.get('company')['id']) #1. 참조하는 company 객체를 찾아 새로운 Recruitment 객체를 생성하고, company 객체를 연결지어 serialize한다 #2. RecruitmentSerializer의 is_valid 혹은 다른 메소드를 오버라이딩하여 request를 serializer로 전달하여 저장한다 #기타 등등 if serializer.is_valid(): serializer.save() return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(status=status.HTTP_400_BAD_REQUEST) 공식 문서, 유튜브 영상, 외국 사이트등을 찾아보았지만 기존에 존재하던 테이블을 참조하며 새로운 객체를 저장하는 방법이 있질 않더군요... 혹시 해결 방법을 아시면 답변 부탁드리겠습니다. 참고로 request는 { "company": { "id": 1, "company_name": "company1", "nationality": "korea", "region": "seoul" }, "position": "백엔드", "reward": 100000, "info": "test", "skill": "django" } 이런식으로 생각하고 있습니다
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
Throttle 설정이 적용되지 않아요
안녕하세요! 강의 잘 듣고 있습니다. DRF 최대 호출 횟수 제한 강의를 보고 적용해보기 위해서 다음과 같이 settings.py를 수정하였는데 리퀘스트 제한이 걸리지 않습니다. 서버를 리스타트해봐도 해결이 안되는데 뭐가 문제일까요? settings.py 소스코드 일부 REST_FRAMEWORK = { 'PAGE_SIZE': 20, 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination', 'DEFAULT_PERMISSION_CLASSES': [ 'rest_framework.permissions.IsAuthenticated', ], 'DEFAULT_THROTTLE_CLASSES': [ 'rest_framework.throttling.UserRateThrottle', # 'rest_framework.throttling.AnonRateThrottle', ], 'DEFAULT_THROTTLE_RATES': { 'user': '3/day', # 'anon': '3/day', },} httpie Response 메시지
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
실습 중 POST 의 경우에 에러 메세지가 출력됩니다
강사님 안녕하세요~~~ 다름이 아니라, 뒷 부분 실습을 따라서 진행하던 중에 첨부드린 사진과 같이 http --auth user2:1234 http://localhost:8000/post/1/ 는 잘 실행되는데 http --auth user2:1234 http://localhost:8000/post/1/ http --auth user2:1234 POST http://localhost:8000/ message="user 2가 생성하는 첫번째 포스팅" 이렇게 POST를 하면 에러가 발생을 하는 것을 볼 수 있었습니다. ...중략 (아주 긴 에러 메세지가 등장합니다.) 문제의 원인이 무엇인지 잘 모르겠어서 이렇게 질문을 남겨드립니다. ㅠㅠ !! 혹 강사님께서 보이시는 문제점을 알려주시면 감사할 것 같습니다. 그럼 정말 감사합니다.
-
해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
진석님 안녕하세요! 질문이 있습니다!!
진석님 안녕하세요! 진석님이 올려주신 강의를 들으며 개발을 시작했고 django로 취업한 개발자 입니다ㅎ 다름이 아니라 재직중인 회사에서 DRF를 사용하고 있지 않아 도입을 해보자고 이야기하고 있는데 사용시 비용을 지불해야 한다는 말씀을 회사에서 하셔서 제가 알고 있는 정보와는 다른 부분이 있어 혹시 아시는 부분이 있는지 여쭤보려 합니다.! DRF는 BSD 라이센스인것으로 알고 있는데 혹시 제가 알고 있는 부분가 다른 정보가 있을까요..?? 강의와는 관련 없는 질문이라 죄송하지만.. 진석님이 올려주신 강의보고 DRF를 너무나도 사용하고 싶어 이렇게 질문은 남기게 됬습니다.!