본문 바로가기
TIL(Daily)/ETC

Mon/31/Oct/22 Django심화

by Hawie 2022. 11. 1.

오늘은 장고 심화 과정중에서 인스타 클론 코딩에 대해 중점 적인 공부를 했다.

기존에 배웠던 Django 내용과  비슷 하면서 다른 부분이 많았다.

Postman 사용 하는 방법도 처음에는 조금 어렵지만 사용방법을 조금더 능숙 해지면

정말 좋은 개발Tool 이다.

심화강의 실습 하면 느낀 점은 정말 백엔드를 중점적으로 공부하는 느낌이 많이든다.

오늘은 게시글 CRUD 와 Postman 으로 테스트 하기를  하였다.

하지만 밑에 코드는 에러는 없지만....

#modles.py

from distutils.command.upload import upload
from email.mime import image
from venv import create
from django.db import models
from users.models import User

# Create your models here.

class  Article(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    title = models.CharField(max_length=50)
    content = models.TextField()
    image = models.ImageField(blank=True, upload_to ='%Y/%m/%d/')
    created_at =models.DateTimeField(auto_now_add=True)
    update_ad = models.DateTimeField(auto_now = True)
    
    def __str__(self):
        return str(self.title)
        
        
  ---------------------------------------------------------------------------------
  
  
  #serializers.py
  
  
  
  from rest_framework import serializers
from articles.models import Article


class ArticleSerializer(serializers.ModelSerializer):
    user = serializers.SerializerMethodField()

    def get_user(self, obj):
        return obj.user.email
    
    class Meta:
        model = Article
        fields = '__all__'
        

class ArticleCreateSerializer(serializers.ModelSerializer):
    class Meta:
        model = Article
        fields = ('title','image','content')



class ArticleListSerializer(serializers.ModelSerializer):
    user = serializers.SerializerMethodField()

    def get_user(self, obj):
        return obj.user.email
    
    class Meta:
        model = Article
        fields = ('pk','title','image','update_ad','user')


---------------------------------------------------------------------------



#views.py


from rest_framework.generics import get_object_or_404
from rest_framework import status
from rest_framework import status, permissions
from rest_framework.views import APIView
from rest_framework.response import Response
from articles import serializers
from articles.models import Article
from articles.serializers import ArticleSerializer, ArticleListSerializer ,ArticleCreateSerializer


# Create your views here.


class ArticleView(APIView):
    def get(self, request):
        articles = Article.objects.all()
        serializer = ArticleListSerializer(articles, many=True)        
        return Response(serializer.data, status=status.HTTP_200_OK)
    
    def post(self,request):
        serializer = ArticleCreateSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save(user=request.user)
            return Response(serializer.data)
        else:
            return Response(serializer.errors , status=status.HTTP_400_BAD_REQUEST)
        
        


class ArticleDetailView(APIView):
    def get(self, request, article_id):
        article = get_object_or_404(Article, id=article_id)
        article = Article.objects.get(id=article_id)
        serializer = ArticleSerializer(article)
        return Response(serializer.data, status=status.HTTP_200_OK)
        
    
    def put(self,request, article_id):
        article = get_object_or_404(Article, id=article_id)
        if request.user == article.user:
            serializer = ArticleCreateSerializer(article,data=request.data)
            if serializer.is_valid():
                serializer.save()  
                return Response(serializer.data, status=status.HTTP_200_OK)
            else:
                return Response(serializer.errors , status=status.HTTP_400_BAD_REQUEST)
        else:
            return Response("권한이 없습네다." ,status=status.HTTP_403_FORBIDDEN)
        
        
    def delete(self, request,article_id):
        article = get_object_or_404(Article, id=article_id)
        if request.user == article.user:
            article.delete()
            return Response('삭제완료',status=status.HTTP_204_NO_CONTENT)
        else:
            return Response("권한이 없습네다." ,status=status.HTTP_403_FORBIDDEN)

 

포스트맨에서 계속 권한없음이 출력 되는데 혼자 해결 하려고 했지만,

일단 포기 하고 내일 다시 해볼 생각이다.

admin 페이지 랑 django 에서는 작동이 잘되는 무엇인 문제인걸까?

 

 

 (A prayer, a flower, a candle and sad tears of pain on your grave.)

'TIL(Daily) > ETC' 카테고리의 다른 글

Fri/04/Nov/22 Django-시스템추천 프로젝트-3  (0) 2022.11.07
Tue/01/Nov/22-Django-심화  (0) 2022.11.02
Fri/28/Oct/22 -Django 심화  (0) 2022.11.01
Wen/26/Oct/22-CRUD복습  (0) 2022.10.27
Tue/25/Oct/22 - Django심화 -2  (0) 2022.10.27

댓글