하지만 Author을 따로 설정해줘야 하는 불편함이 있다.
따라서 mystorage/serializers.py를 수정해 주어야 한다.
from .models import Essay from rest_framework import serializers
class EssaySerializer(serializers.ModelSerializer):
author_name = serializers.ReadOnlyField(source='author.username')
class Meta: model = Essay fields = ('pk', 'title', 'body', 'author_name') |
serializer.py에 author_name에 현재 유저의 정보를 담기 위한 통을 만들어 주었다면
mystorage/views.py에서 안에 들어갈 내용을 설정해 주자.
다시 서버를 실행시켜 새로운 글을 작성하여 주면
author란 필드를 따로 설정을 안하여도 우측 상단에 admin사이트에서 접속하여 admin계정으로 로그인되어있다고 나와있는 user을 자동으로 불러올 수 있게 되었다.
이제 우측 상단에 로그인 설정을 해주자.
homework프로젝트의 urls.py에서 설정할수있다.
homewokr/urls.py
from django.contrib import admin from django.urls import path, include from rest_framework import urls from mystorage import urls
urlpatterns = [ path('admin/', admin.site.urls), path('', include('mystorage.urls')), path('api-auth/', include('rest_framework.urls')) ] |
이렇게만 설정해 주어도 로그인, 로그아웃 기능을 활성화하여 줄 수 있다.
서버를 실행시켜 확인해 보자.
이제 admin 페이지에서 등록한 user로 로그인을 하여 글을 써주면
된다.
하지만 어떤 user가 들어와도 혹은 로그인하지 않은 유저가 있어도
게시글들을 다 볼 수가 있다.
그래서 user별 자신의 글만 볼 수 있게 필터링을 해줄 것이다.
mystorage/views.py를 수정하자
from rest_framework import viewsets from .models import Essay from .serializers import EssaySerializer
class PostViewSet(viewsets.ModelViewSet):
queryset = Essay.objects.all() serializer_class = EssaySerializer
def perform_create(self, serializer): serializer.save(author=self.request.user)
def get_queryset(self): qs = super().get_queryset()
if self.request.user.is_authenticated: qs = qs.filter(author = self.request.user)
else: qs = qs.none()
return qs |
get_queryset를 이용하여
로그인한 유저와 author이 같을 때에만 값을 보여주고
아닐 경우엔 아무것도 없이 설정하여 주었다.
서버를 활성화하여 확인해 주자.
자신의 글만 확인할 수 있도록 필터링하여 주었다.
마지막 검색 기능을 추가하자
mystorage/views.py를 수정한다.
저렇게 rest_framework의 기능을 이용하여 3줄만 추가하여 검색기능을 활성화시켜줄 수 있다.
서버를 활성화하여 확인해 주자.
이제 필터란 필드가 생겨 게시글을 검색할 수 있다.
'코딩공부 > Python Django' 카테고리의 다른 글
KKU likelion django project (2) (0) | 2020.01.02 |
---|---|
KKU likelion django project (1) (0) | 2020.01.02 |
KKU likelion rest project (4) (0) | 2019.10.28 |
KKU likelion rest project (3) (1) | 2019.10.28 |
KKU likelion rest project (1) (0) | 2019.10.27 |