코딩공부/Python Django

KKU likelion rest project (2)

integerJI 2019. 10. 27. 23:13

하지만 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(selfserializer):

        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