[Django REST]#5 게시글 기능 구현(페이징)
·
DJANGO/Django REST
이번에 만들 부가 기능은 Pagination 입니다. 이는 게시글 전체 조회 페이지를 여러 페이지로 나누거나 한 번에 모든 글을 가져오기 부담스러울 경우 한 번의 API 요청으로 가져올 수 있는 데이터 수를 제한하는 기능입니다. 따로 작업할 필요 없고, settings.py의 REST_FRAMEWORK에 내용을 추가해주면 됩니다. REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': [ 'rest_framework.authentication.TokenAuthentication', ], 'DEFAULT_FILTER_BACKENDS': [ 'django_filters.rest_framework.DjangoFilterBackend', ], 'DEFAULT_PAGINAT..
[Django REST]#3-2 게시글 기능 구현(시리얼라이저, 뷰 권한)
·
DJANGO/Django REST
시리얼라이저 #3-1에서 모델까지 구현하였으니 이제 시리얼라이저를 작성해보겠습니다. 우선 같은 모델에 대하여 두 개의 시리얼라이저를 만들 것입니다. 두 개의 시리얼라이저가 필요한 이유는 용도가 다르기 때문입니다. 게시글을 작성할 때 유저가 입력해주는 정보는 제목, 카테고리, 본문, 이미지 정도 입니다. 나머지 날자, 저자와 같은 데이터는 우리의 코드가 알아서 채워주거나 좋아요 같은 데이터는 처음에 빈칸으로 두는 경우가 있습니다. 이 경우 시리얼라이저 목적은 유저가 입력한 데이터를 검증하고 장고 데이터로 변환하여 저장하게끔 하는 것입니다. 그렇기 때문에 해당 게시글에 대한 모든 정보를 역으로 Json 으로 변환하여 전달해야 하는 시리얼라이저와는 달라야 합니다. 이 두 개의 시리얼라이저를 서로 구분하여 작성..
[Django REST]#3-1 게시글 기능 구현(모델 구현, 참조 에러)
·
DJANGO/Django REST
이번에는 게시글 관련 기능을 구현해보도록 하겠습니다. 게시글 관련 기능으로서는 -게시글 생성 -개사굴 가져오기 -게시글 수정하기 -게시글 삭제하기 -게시글 좋아요 기능 -게시글 필터링 -게시글 권한 설정 등이 있습니다. 모델 우선 앱부터 만들겠습니다. 앱의 이름은 posts라고 하겠습니다. 가상환경으로 들어가서 (myvenv) C:\Users\...\myboard>python manage.py startapp posts 앱을 만들어줍니다. 앱을 만들었으면 등록해줘야 합니다. INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'djang..
[Django REST]#2-5 회원 기능 구현(모델 확장)
·
DJANGO/Django REST
앞서 얘기한 4가지의 모델 확장 방법 중 1:1Model 을 사용하여 기존 User모델을 확장해보겠습니다. 새로운 모델의 이름은 프로필 모델입니다. 모델 기존에는 장고에서 제공해주는 기본 유저 모델을 사용하였기 때문에 따로 모델을 만들지 않았지만 우리는 지금 새로운 프로필 모델을 만들어 기존 유저 모델과 1대1 연결을 해줘야합니다. from django.db import models from django.contrib.auth.models import User from django.db.models.signals import post_save from django.dispatch import receiver # Create your models here. class Profile(models.Model)..
[Django REST]#2-4 회원 기능 구현(모델 확장 방법)
·
DJANGO/Django REST
이번에는 모델을 확장해보겠습니다. 지금 사용하고 있는 User모델은 username, email, password 필드를 사용하고 있습니다. 이 필드들은 장고 기본 유저 모델 내에 있는 필드입니다. 게시판 프로젝트를 진행하면서 사용할 모델에는 위 필드 말고도 사용할 필드들이 있습니다. 추가할 필드 -nickname(CharField) -position(CharField) -subjects(CharField) -image(ImageField) 닉네임, 직종, 관심사, 프로필 이미지를 사용할 예정입니다. 이렇게 기본 유저 모델만으로 만족이 안될 때 모델을 확장합니다. 모델 확장 방법은 4가지가 있습니다. -Proxy Model 기본 User모델을 그대로 상속받아 기능을 추가, 동작 변경 가장 간단하지만 스키..
[Django REST]#2-3 회원 기능 구현(로그인 기능)
·
DJANGO/Django REST
개발 순서는 회원가입 기능 구현과 마찬가지로 모델 > 시리얼라이저 > 뷰 > URL 순으로 개발하겠습니다. 모델 로그인 기능의 경우 모델이 필요 없습니다. 사용자가 ID, PW를 적어서 보내면 이를 확인하는 작업이기 때문에 바로 시리얼라이저로 넘어갑니다 시리얼라이저 from django.contrib.auth import authenticate class LoginSerializer(serializers.Serializer): username = serializers.CharField(required = True) password = serializers.CharField(required = True, write_only = True) def validate(self, data): user = authe..
[Django REST]#2-2 회원 기능 구현(회원가입 기능)
·
DJANGO/Django REST
회원가입과 로그인 등의 기능을 구현하기 위해 위 기능들을 모아놓은 앱을 생성하였습니다. 앱의 이름은 users 입니다. (myvenv) C:\Users\...\myboard>python manage.py startapp users 앱을 생성하였으니 앱을 등록합니다. (myboard/setting.py) 또한 회원 인증은 기본 토크 인증 방식을 이용합니다. 따라서 rest_framework.authtoken 앱도 추가합니다. INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django...
[Django REST]#2-1 회원 기능 구현
·
DJANGO/Django REST
우선 Django에서 회원 기능을 미리 만들어 놓았습니다. 회원 기능은 수많은 프로젝트에서 활용 가능하니 User 라는 기본 모델을 미리 만들어 놓았습니다. 때문에 따로 모델을 구현하지 않고 진행 가능합니다. 예를 들어 (myvenv) C:\Users\jinhy\myboard>python manage.py createsuperuser 위 명령어를 통하여 관리자를 생성할 수 있습니다. Django 기본 User모델 중 superuser를 직접 구현할 필요 없이 미리 구현된 User모델을 통하여 불러올 수 있습니다. 기본 User모델은 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', ..