[Django][심화] 4주차 체크리스트

손성수·2023년 4월 26일
0

Checklist

  • [✔] restful한 api 설계를 할 수 있다.
  • [✔] 미디어 파일과 스태틱 파일에 대해 이해한다.
  • [✔] 게시글 모델과 조회/업로드를 위한 serializer를 만들 수 있다.
  • [✔] 이미지를 포함한 게시글 기능을 개발할 수 있다.
  • [✔] 포스트맨으로 백엔드 개발을 하면서 테스팅을 할 수 있다.
  • [✔] drf에서 댓글 기능을 개발할 수 있다.
  • [✔] drf에서 좋아요 기능을 개발할 수 있다.
  • [✔] drf에서 follow 기능을 개발할 수 있다.
  • [✔] many-to-many 관계를 설정하는 경우와 방법, 그리고 related_name의 사용방법을 이해한다.




restful api 설계

  • restful api
    URI 의 자원과 METHOD의 형식에 따라 어떤한 처리를 하는데
    이때 URIL의 자원은 사용자(로컬환경) 에서 자원과 METHOD형식에따라
    서버는 METHOD별로 각기 다른 처리를 사용자에게 보여준다

url 설계

app.urls.py

urlpatterns = [
	path('student/<int:student_id>/',views.Student.as_view(),name='student'),
]

CBV

from rest_framework,views import APIView

class Student(APIView):
	def get(self,request,student_id):
    	pass
	def post(self,request,student_id):
    	pass
	def put(self,request,student_id):
    	pass
	def patch(self,request,student_id):
    	pass
	def delete(self,request,student_id):
    	pass




미디어 파일과 스태틱

  • runserver를 할 때에, 개발 환경에서는 settings.py의 DEBUG를 True로 설정시
    static 파일과 미디어 파일을 알아서 척척 찾아다 주지만, 실제 배포 환경에서는
    보안상의 이유로 False로 설정해야한다.
    다만 이때 static파일의 경로를 지정을 해줘야 하는데
    static 디렉토리는 css,image파일 등을 보관하고
    media 디렉토리는 유저가 등록한 image파일을 보관하는 디렉토리이다.

  • settigns.py 설정

STATIC_ROOT = BASE_DIR / "static"
STATIC_URL = '/static/'

MEDIA_ROOT = BASE_DIR/ "media"
MEDIA_URL = '/media/'
  • urls.py 설정
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
	....
]

urlpatterns+= static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns+= static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
  • html 설정
html 설정
{% load static %}
<img src="{% static 'my_app/example.jpg' %}" alt="My image">

게시글 모델과 조회/업로드를 위한 serializer

  • 앞서 Serializer에 관한 개념은 이렇다.
    직렬변환, 딕셔너리의 형태를 JSON형태로 변경해주는 편리한 기능이다.

  • 게시글 모델을 조회하고, 업로드 하는것에 관한 기능은 4가지가 될 것 같다.

    1. 전체 게시글 읽어오기
    2. 게시글 작성
    3. 상세 페이지 읽어오기
    4. 게시글 수정,삭제
  • 모델 설계

class Post(models.Model):
    user = models.ForeignKey(User,on_delete=models.CASCADE)
    title = models.CharField(max_length=50)
    content = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
  • Serializer.py

import

from rest_framework import serializer
from .models import post

Serializer class

class PostSerializer(serializer.ModelSerialzier):
	class Meta:
    	model = Post
        fields = "__all__"

Serializer class에 특정한 필드만 직렬화

class PostSerializer(serializer.ModelSerialzier):
	class Meta:
    	model = Post
        fields = ("user","title")
  • 주의사항, 튜플로 묶어주는것이기때문에, 한개의 필드만 사용한다 할지라도
    문장의 끝에 ,를 사용해야한다
profile
더 노력하겠습니다

0개의 댓글

관련 채용 정보