목록장고 (Django) (43)
터칭 데이터

Vote의 상세 페이지를 만들어 그 곳에서 로그인한 사용자가 투표를 하거나 자신이 한 투표들을 조회하고 이미 진행한 투표를 다른 곳에 행사하도록 수정하는 기능을 구현하겠습니다. polls_api/serializers.py from polls.models import Question,Choice, Vote class VoteSerializer(serializers.ModelSerializer): voter = serializers.ReadOnlyField(source='voter.username') class Meta: model = Vote fields = ['id', 'question', 'choice', 'voter'] polls_api/views.py from polls.models import Q..

로그인한 사용자만 투표를 할 수 있도록 만들기 우리가 저번에 뷰에서 메서드 기반으로 만든 vote 기능은 구현과 실습에만 초점을 맞췄기 때문에 누구나 자유롭게 들어와 투표를 제한 없이 여러번 할 수 있다는 문제가 있었습니다. 우리가 원하는대로 한명의 사용자가 하나의 question에서는 하나의 표만 행사할 수 있도록 하겠습니다. polls/models.py # (..생략..) from django.contrib.auth.models import User # (..생략..) class Vote(models.Model): question = models.ForeignKey(Question, on_delete=models.CASCADE) choice = models.ForeignKey(Choice, on_de..

RelatedField란? Django의 RelatedField는 Django REST framework (DRF)에서 사용되는 직렬화 클래스의 일부로, 관련된 모델 객체에 대한 정보를 표시하고 연결된 데이터를 표현하는 데 사용되는 필드입니다. RelatedField는 다양한 관계를 다루는 데 도움이 되며, 다음과 같은 목적으로 사용됩니다: 1. **관계된 모델에 대한 정보 제공**: RelatedField는 직렬화 클래스에서 관련 모델 객체의 정보를 표시하는 데 사용됩니다. 예를 들어, ForeignKey, OneToOneField, ManyToManyField 등을 사용하여 다른 모델과의 관계를 나타내는 필드에 대한 데이터를 표시할 때 사용됩니다. 2. **연결된 데이터 표현**: RelatedFie..

각 질문(question)마다 작성자 표시하기 로그인한 사용자가 Question을 만들 때 사용자가 만든 질문이라는 것을 표현해보겠습니다. Question List 페이지에서 각 질문마다 질문을 작성한 사용자 필드 owner라 표시되도록 할겁니다. Question List 페이지에 로그인&로그아웃 기능 추가 먼저 Question List에서 로그인하고 로그아웃할 수 있는 기능을 더할겁니다. polls_api/urls.py rest/api-auth 패턴을 path로 추가합니다. Django Rest Framework의 `rest_framework.urls` 패턴은 Django에서 제공하는 기본 로그인 및 로그아웃 페이지를 포함하는 URL 패턴입니다. 이 패턴을 사용하면 API에 로그인 및 로그아웃 기능을 ..

Serializer로 회원가입 기능 만들기 바로 이전 시간에서는 rest_framework의 도움 없이 장고만의 기능인 UserCreationForm으로 회원가입 기능을 구현해봤습니다. 이번 시간에는 Django Rest Framework의 Serializer기능을 사용해 사용자의 회원가입 기능을 구현해보겠습니다. 회원가입 Serializer 만들기 우리는 DRF를 이용한 Serializer는 polls_api/serializers.py에서 구현해왔습니다. polls_api/serializers.py RegisterSerializer 클래스를 구현했는데요. 모델은 당연히 User입니다. 그런데 Meta 클래스에서 extra_kwargs가 생소하실 겁니다. 비밀번호인 password를 읽을 수 있으면 안되..

사용자를 만드는 기능을 두가지 방법으로 구현해보려합니다. 첫번째는 장고에서 제공하는 기능으로, 두번째는 restframework에서 Serializesr를 이용해 사용자를 만드는 방법입니다. 장고에서 제공하는 UserCreationForm 기능으로 회원 만들기 지금까지 우리는 장고에서 제공하는 기능은 polls앱에서 DRF에서 제공하는 기능은 polls_api에서 구현해 왔습니다. 그로므로 이번에는 polls앱에서 시작하겠습니다. polls/view.py # ..생략.. from django.views import generic from django.urls import reverse_lazy from django.contrib.auth.forms import UserCreationForm # ..생략...

모든 User를 JSON 형태로 조회하고 URL에 User id를 입력하면 그 id의 User가 그동안 작성한 question들을 조회할 수 있는 List 페이지와 Detail(상세) 페이지를 만들어보겠습니다. polls_api/serializers.py 첫번째 PrimaryKeyRelatedField가 무엇인지 궁금하실 겁니다. Django REST framework에서 PrimaryKeyRelatedField는 관계 필드 중 하나로, 주어진 모델에서 기본 키(primary key)와 관련된 객체를 나타내는데 사용됩니다. 여기서는 User의 기본키를 이용해 Question 모델에서 User에 기본키로 작성된 question들을 쿼리셋으로 가져오겠다는 뜻입니다. many는 현재 모델 기본키 하나에 여러개..

Question 모델에 작성자 필드를 추가하고 자신이 작성한 질문만 수정할 수 있도록 하는 기능을 만들며 장고에서 제공하는 사용자 관리 기능에 대해서도 알아볼 것입니다. django.contrib.auth에 대해 `django.contrib.auth`는 Django의 내장 인증 및 사용자 관리 앱입니다. 이 앱은 사용자 계정, 그룹, 권한 및 다른 인증 관련 기능을 구현하기 위한 모든 핵심 도구와 클래스를 제공합니다. 아래는 `django.contrib.auth`의 몇 가지 중요한 요소에 대한 간단한 설명입니다: 1. **User 모델**: `User` 모델은 사용자 계정을 나타내는 클래스로, 사용자 이름, 비밀번호, 이메일 등과 같은 필드를 가지고 있습니다. Django에서 내장된 User 모델을 사용..
장고 개발을 공부하다보면 정참조와 역참조라는 단어를 들으실 수 있을겁니다. 정참조와 역참조에 대해 나누어 설명을 드리겠습니다. 정참조(Forward Reference)란? Django에서 '정참조(Forward Reference)'는 모델 간의 관계에서 한 모델이 다른 모델을 참조하는 방향을 나타냅니다. 일반적으로 ForeignKey, OneToOneField, ManyToManyField와 같은 관계 필드를 사용하여 정참조를 설정합니다. 이러한 관계 필드를 사용하면 모델 간의 관계를 정의하고 하나의 모델에서 다른 모델로의 참조를 만들 수 있습니다. 예를 들어, 다음은 `Author` 모델과 `Book` 모델 간의 정참조를 나타내는 Django 모델 예제입니다: from django.db import m..
우리가 지난 시간 Mixins를 사용하며 작성한 polls_api/views.py의 코드 입니다. from django.shortcuts import render, get_object_or_404 # from rest_framework.decorators import api_view from polls.models import Question from .serializers import QuestionSerializer from rest_framework.response import Response from rest_framework import status, mixins, generics from rest_framework.views import APIView # Create your views her..