33,000원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨Django REST Framework 핵심사항
django venv activate 하고 나서 vue 서버도 실행 해야 하나요?
python manage.py runserver로 장고 서버실행 한뒤에 localhost:8000 으로 접속했는데 그냥 하얗게 나와서 구글 개발자 도구로 확인해보니 404라고 응답이 왔습니다.vue 는 사용해본적이 없어서 검색해보니 npm run serve 를 해주어서 vue 서버를 구동하라고 해서 해봤더니 오류만 나옵니다.어떻게 해야 하나요?
- 미해결Django REST Framework 핵심사항
더 공부할게있을까요
장고 웹프로그라밍만 공부하다가 drf부분 공부하고 생각보다 어려워서 충격받았습니다. 강의내용은 꾸역꾸역 모두 다 이해했는데, 이게 drf의 맛보기인지 아니면 핵심 내용이라서 이것 정도면 프로젝트를 진행하기 무리 없는 지 궁금합니다 시리얼라이즈 부분이 어려운데, view 종류도 많고 내부적으로 동작하는게 많아서 알아야할 게 많네요
- 미해결Django REST Framework 핵심사항
용어에 대해 문의 드립니다.
S.M.U.V.S를 언급 하시면서satisfy에 대해 말씀하시더라고요이게 어떤 의미로 말씀하시는지 이해가 안가서 문의 드립니다.Model, Url, View, Sirialize는 이해를 하고 있습니다.
- 미해결Django REST Framework 핵심사항
like 기능을 위한 overriding 문의
안녕하세요 강사님!강의 재미있게 보면서 공부하고 있습니다.PostLikeAPIView에 대한 overriding 관련 문의드립니다.class PostLikeAPIView(UpdateAPIView): queryset = Post.objects.all() serializer_class = PostLikeSerializer # PATCH method def update(self, request, *args, **kwargs): partial = kwargs.pop('partial', False) instance = self.get_object() # data = instance.like + 1 data = {'like': instance.like + 1} serializer = self.get_serializer(instance, data=data, partial=partial) serializer.is_valid(raise_exception=True) self.perform_update(serializer) if getattr(instance, '_prefetched_objects_cache', None): # If 'prefetch_related' has been applied to a queryset, we need to # forcibly invalidate the prefetch cache on the instance. instance._prefetched_objects_cache = {} # return Response(serializer.data) return Response(data['like'])강의 내용 중에 위 괕이 오버라이딩 하는 로직이 있었는데요. # views.py class PostLikeAPIView(UpdateAPIView): queryset = Post.objects.all() serializer_class = PostLikeSerializer def patch(self, request, *args, **kwargs): instance = self.get_object() request.data['like'] = instance.like + 1 super().patch(request, *args, **kwargs) return Response(request.data['like']) # serializers.py class PostLikeSerializer(serializers.ModelSerializer): class Meta: model = Post fields = ['like'] 이런 식으로 해도 같은 결과를 얻을 수 있을 수 있었습니다.이렇게한 의도는 update method를 overriding 하는 거보다 patch method를 overriding 할 때 비즈니스 로직 코드가 더 짧으니 실수가 적지 않을까 해서 입니다.제가 적은대로 사용하는 것도 유효한지, 어떤 단점이 있을지 잘 생각이 안나서 문의드립니다.강의 감사하게 보고있습니다.항상 건강하시길 바라겠습니다^^
- 해결됨Django REST Framework 핵심사항
코드 최적화 과정
안녕하세요 선생님! 마지막 강의 까지 잘 들었습니다 매우 흥미로웠고 스스로 프로젝트 하며 삽질 했던 내용들이 많이 나왔던 것 같아서 꽤 재밌었네요. 근데 한가지 의문이 드는 점이 생겼어요. 저는 이 강의의 앞단을 듣고 나서 프로젝트에서 이러한 방향성으로 진행 해야겠다고 생각 했는데요.Model: 모델링Serializer: 모델을 기반으로 하여 메타 클래스 지정한 직렬화View: ViewSet을 활용하여 CRUD 기능이 짧은 코드로 모두 이루어지게 작성Url: url dispatcher를 통한 라우팅 과정이후, 요구사항 분석을 통해 커스터마이징 하는 코드는 대개 Generic한 View(UpdateAPIView, CreateAPIView) 등 으로 사용을 하고, 이 상속 받는 뷰 에서 제공되지 않는 기능들이 필요한 부분은 API View를 상속 받아야된다고 생각을 하고 있었는데, 마지막 강의가 제너릭 뷰를 뷰셋으로 다시 리팩터링 하는 과정이었는데요.그렇다면 순서를 어떻게 가져가야 효율적으로 DRF의 빠른 프로젝트 빌딩의 이점을 가져갔다고 할 수 있을까요?-> 뷰셋을 먼저 코딩한 후, 제너릭 뷰를 통해 세분화-> 제너릭 뷰를 통해 기능정의 우선, 뷰셋으로 코드의 간결화 유지마지막에 애매모호한 점이 있어서 마지막 질문을 남깁니다 감사합니다!
- 해결됨Django REST Framework 핵심사항
유저 1명이 1개의 게시글에 좋아요를 누를 경우
안녕하세요 선생님 강의 매우 재밌게 듣고 있습니다.커리큘럼 3-3 숫자만 보내고 싶을 때를 수강 하고 난 후, 게시글은 1명의 유저가 1개의 좋아요를 보내고 이미 보냈다면 취소가 되어야 될 것 같다는 생각에 코드를 수정 하고 있었는데요.사실, 모델링 부분에서 건들지 않으면 위 사항은 자바스크립트의 로컬스토리지나 세션의 개념이 아니고서야 처리가 안될 것 같다는 생각이 드는데, 선생님은 어떻게 생각 하시나요?만약 모델링을 수정 하고, 위 기능을 고려 한다면 이렇게 접근 할 것 같습니다.좋아요 체크 여부 Boolean 필드 생성해당 게시글에 좋아요를 누른 경우update 구문에서 좋아요 체크 여부를 True로 변경update 구문 내에서 조건 분기 추가좋아요 체크가 되어 있지 않다면 숫자 +1좋아요 체크가 되어 있다면 숫자 -1좋아요 숫자가 0이라면 0을 그대로 return이 부분은 PositiveInteger기 때문에 무시해도 되나요?제가 생각한 접근 방식을 보시고, 선생님의 노하우를 공유 해주셨으면 합니다 감사합니다.
- 해결됨Django REST Framework 핵심사항
프로잭트를 생성하고 runserver하면 ModuleNotFoundError: No module named 발생해요
가상환경을 만들고 새로운 프로잭트를 만들었는데 runserver하면 ModuleNotFoundError: No module named [예전에 만든 프로잭트 폴더이름] 이 뜨면서 에러가 나요.. 가상환경이 아닌곳에서 해도 똑같이 에러가 발생하고 삭제하고 다시 만들고 settings.py, wsgi 등등 에서도 잘 확인했습니다만 해결이 안됩니다.해결방법이 있을까요? 에러코드 < File "C:\Users\USER21R16\AppData\Local\Programs\Python\Python310\lib\site-packages\django\core\management\__init__.py", line 446, in execute_from_command_line utility.execute() File "C:\Users\USER21R16\AppData\Local\Programs\Python\Python310\lib\site-packages\django\core\management\__init__.py", line 440, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "C:\Users\USER21R16\AppData\Local\Programs\Python\Python310\lib\site-packages\django\core\management\base.py", line 415, in run_from_argv connections.close_all() File "C:\Users\USER21R16\AppData\Local\Programs\Python\Python310\lib\site-packages\django\utils\connection.py", line 84, in close_all for conn in self.all(initialized_only=True): File "C:\Users\USER21R16\AppData\Local\Programs\Python\Python310\lib\site-packages\django\utils\connection.py", line 76, in all return [ File "C:\Users\USER21R16\AppData\Local\Programs\Python\Python310\lib\site-packages\django\utils\connection.py", line 73, in __iter__ return iter(self.settings) File "C:\Users\USER21R16\AppData\Local\Programs\Python\Python310\lib\site-packages\django\utils\functional.py", line 57, in __get__ res = instance.__dict__[self.name] = self.func(instance) File "C:\Users\USER21R16\AppData\Local\Programs\Python\Python310\lib\site-packages\django\utils\connection.py", line 45, in settings self._settings = self.configure_settings(self._settings) File "C:\Users\USER21R16\AppData\Local\Programs\Python\Python310\lib\site-packages\django\db\utils.py", line 148, in configure_settings databases = super().configure_settings(databases) File "C:\Users\USER21R16\AppData\Local\Programs\Python\Python310\lib\site-packages\django\utils\connection.py", line 50, in configure_settings settings = getattr(django_settings, self.settings_name) File "C:\Users\USER21R16\AppData\Local\Programs\Python\Python310\lib\site-packages\django\conf\__init__.py", line 92, in __getattr__ self._setup(name) File "C:\Users\USER21R16\AppData\Local\Programs\Python\Python310\lib\site-packages\django\conf\__init__.py", line 79, in _setup self._wrapped = Settings(settings_module) File "C:\Users\USER21R16\AppData\Local\Programs\Python\Python310\lib\site-packages\django\conf\__init__.py", line 190, in __init__ mod = importlib.import_module(self.SETTINGS_MODULE) File "C:\Users\USER21R16\AppData\Local\Programs\Python\Python310\lib\importlib\__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1050, in _gcd_import File "<frozen importlib._bootstrap>", line 1027, in _find_and_load File "<frozen importlib._bootstrap>", line 992, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed File "<frozen importlib._bootstrap>", line 1050, in _gcd_import File "<frozen importlib._bootstrap>", line 1027, in _find_and_load File "<frozen importlib._bootstrap>", line 1004, in _find_and_load_unlockedModuleNotFoundError: No module named 'blog'>
- 미해결Django REST Framework 핵심사항
GET Method 에서 왜 Like 수를 증가시키는지 궁금합니다.
GET Method 에서 왜 Like 수를 증가시키는지 궁금합니다.이렇게되면 Like 수는 늘어나서 실질적인 데이터베이스 상에는 변화가 일어나는 것인데,GET Method 의 목적과는 맞지 않는 행위로 생각되었습니다! 의견이 궁금합니다
- 미해결Django REST Framework 핵심사항
CSRF Token에 대한 질문입니다.
안녕하세요. 강의는 잘 들었습니다.강의와 관련이 없지만 해답을 찾지 못해 이렇게 남깁니다.. 다름이 아니라 제가 jwt token을 사용하여 프로젝트를 구현을 했습니다. 제가 알고 있는 것은 jwt token을 사용하게 되면 csrf token이 필요없기 때문에 발급하면 안되는 것으로 알고 있습니다. 그래서 X-CSRFToken을 발급하지 못하게 하고 싶은데 검색해도 찾지 못했습니다. 일단 제가 해본 것으로는 settings.py -> 'django.middleware.csrf.CsrfViewMiddleware' 을 주석처리.dj-rest-auth -> REST_AUTH 설정.이 있습니다. 토큰에 대해 잘못알고 있거나 어딜 수정하면 될지 피드백을 주시면 감사하겠습니다.
- 미해결Django REST Framework 핵심사항
ModuleNotFoundError: No module named 'rest_framework django' 오류
안녕하세요.블로그앱 만드는 강의를 듣지 않았어서, 기존에 만들어진 블로그앱을 강의자료를 통해 다운로드 받았습니다.맥과 윈도우 환경차이일지 모르겠는데,섹션1-2 router/viewset 코딩하기의 예시를 복붙하여 실행시키는 코드가ModuleNotFoundError: No module named 'rest_framework django'아래와 같은 오류를 내며 실행되지 않습니다. 똑같이 urls.py를 다 주석처리 해주었으며, settings.py 설정도 완료된 상태입니다. 분명 모듈 네임이 rest_fraamework 인데 어디서 django가 붙는지 모르겠네요 ;; 해당 코드를 새로 제가 프로젝트를 하나 생성하여 실행시켰을 땐 아주 잘 실행이 됩니다.혹시 기존의 강의자료에서 VueDjAgency-ch0를 다운받아 실행시킨다고 했을 때, 혹시 추가적으로 수정하거나,봐줘야 할 부분이 있는걸까요? 감사합니다.
- 미해결Django REST Framework 핵심사항
앱을 구성할 때 api 앱과 blog 앱을 나누어서 구성하는 이유가 궁금합니다ㅜ
rest를 사용한 api2 앱이든 rest를 사용하지않은 api 앱이든 blog앱과 따로 만들어서 사용하는 이유가 무엇인가요?
- 미해결Django REST Framework 핵심사항
to_representation() 오버라이딩 질문입니다.
안녕하세요. 강의 잘 듣고 있습니다.강의 내용 중 PostListAPIView의 get_serializer_context() 오버라이딩 말고FileField()의 to_representaion() 메소드를 오버라이딩 하려고 시도중입니다. PostListSerializer에서 오버라이딩 하는 것으로 보이는데 방법을 잘 모르겠습니다. 아래와 같이 오버라이딩 하면, ModelSerializer의 to_representation()을 오버라이딩하게 되버립니다.class PostListSerializer(serializers.ModelSerializer): category = serializers.ReadOnlyField(source='category.name') class Meta: model = Post fields = ['id', 'title', 'image', 'like', 'category'] def to_representation(self, value): if not value: return None use_url = getattr(self, 'use_url', api_settings.UPLOADED_FILES_USE_URL) if use_url: try: url = value.url except AttributeError: return None request = self.context.get('request', None) if request is not None: return url return url return value.name
- 미해결Django REST Framework 핵심사항
공부 순서에 관해 질문드립니다.
안녕하십니다. 정말 좋은 강의 잘 보고 있습니다.저는 현재 APIView를 통해서 http메서드에 따라서 나눠주며 코딩을 하고 있습니다.강사님께서 알려주시는 방법은 아니지만 저의 현재 지식으로는 이게 익숙한 상태입니다.ㅠ본론을 말씀드리자면 현업에서 잘 다뤄야할 뷰나 시리얼 라이저 등 어떤 소양을 갖춰야 하는지 궁금합니다.또 그것을 얻기 위한 공부 순서가 있는지 궁금합니다. 난해한 질문 드려서 죄송합니다.
- 미해결Django REST Framework 핵심사항
CateTagAPIView에서 get 메소드
안녕하세요! 강의 중에 CateTagAPIView안에 get을 정의 하셨는데 이 get은 오버라이딩인가요? APIView에 가서 찾아봤는데 get 메소드가 없어서,,CateTagAPIView에서 정의한 get 메소드가 어떻게 실행(?) 되는건지 궁금합니다.
- 미해결Django REST Framework 핵심사항
깃헙 페이지를 보고싶어요
안녕하세요, 강의를 잘 듣고 있는데 drf 강의 관련한 코드를 보고싶습니다! 깃허브 링크 공유가능한가요?
- 미해결Django REST Framework 핵심사항
디버거 관련 질문입니다.
안녕하세요 강사님 강의를 듣고 현재 열심히 DRF관련 공부중인 수강생입니다.다름이 아니라, 제가 브레이크 포인트를 걸고 해당 코드가 호출되기까지 어떤 흐름으로 타고 흘러가는지를 보고싶은데, 이게 해당 파일의 첫줄부터 시작하는거같더라구요 VS Code는.. 혹시 이렇게 브레이크 포인트 걸고 동작시키면 거기까지 도달하는데 필요한 함수의 흐름을 볼 수 있는 디버거를 알고계실까요?
- 미해결Django REST Framework 핵심사항
가장 마지막강의 (Generic View -> ViewSet migration) 질문입니다.
강사님께서 그 전 강의에서, RetrieveAPIView에 serializer_class를 쓰는 대신, 직접 dict로 매핑시켜 구현하는 코딩 방식으로 구현해주셔서 ViewSet으로 migration하는 과정에서 serializer_class를 PostListSerializer하나만 쓰면, 다 동작이 하게끔 구현을 해주셨는데요.만약, RetrieveAPIView의 리팩토링 없이, 하나의 ViewSet으로 구현한다고 하면, 어떻게 구현을 하면 될까요? serializer_classes라는게 존재할까 싶어 DRF 공식문서를 찾아봤지만 어쨌든 CBV에선 하나의 serializer_class만 지정이 가능하더라구요. 강사님의 방법을 알고싶습니다.
- 해결됨Django REST Framework 핵심사항
PostCommentListAPIView(게시물 댓글 조회 api) 관련 질문
https://www.inflearn.com/questions/626618 해당 질문을 올렸던 수강생입니다! PostCommentListAPIView는 각 게시물에 달린 댓글의 list를 조회하고자 합니다. 이에 대해 어떻게 코드를 구현하면 좋을 지 여쭤보고 싶습니다! CommentDeleteAPIView는 게시물의 댓글을 삭제하는 api인데, 이것 또한 위 코드로 작성했을 경우 제대로 댓글이 삭제되지 않아 조언을 구하고 싶습니다.위 질문들에서 2번은 해결하였고, 1번 관련 코드를 작성하던 중 몇몇 에러가 발생하여 질문드립니다. 위 코드를 실행하면 MultipleObjectsReturned get() returned more than one Comment -- it returned 2! 3번 포스트에 댓글이 2개 존재하는 상황에서 이러한 에러가 떠서, 애초에 시도했었던 get_queryset을 다시 사용하려고 했지만 다음과 같이 작성하면 Field 'id' expected a number but got <doeco_app.views.PostCommentListAPIView object at 0x00000233D4818BB0>. 해당 에러가 발생하는 상황입니다. int 값으로 형변환이 필요한 상황이라고 생각하여 형변환도 시도해보았지만여전히 같은 에러가 발생하여 조언을 구하고 싶습니다!
- 미해결Django REST Framework 핵심사항
댓글 보기 및 삭제 api
안녕하세요! 해당 강의에 추가하려고 하는 api가 두가지 인데, 1) 게시물에 달린 댓글 list 조회 2) 댓글 삭제 PostCommentListAPIView는 각 게시물에 달린 댓글의 list를 조회하고자 합니다. 이에 대해 어떻게 코드를 구현하면 좋을 지 여쭤보고 싶습니다! CommentDeleteAPIView는 게시물의 댓글을 삭제하는 api인데, 이것 또한 위 코드로 작성했을 경우 제대로 댓글이 삭제되지 않아 조언을 구하고 싶습니다. generic 에서 구현할 수 있는 방법이 있나요??
- 미해결Django REST Framework 핵심사항
post, comment crud 질문
해당 강의의 최종 단계에선 post, comment 에 대해서 crud가 가능한 것인가요?? post는 get, comment는 post만 가능하다고 확인이 되어서요!