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/'
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 설정
{% load static %}
<img src="{% static 'my_app/example.jpg' %}" alt="My image">
앞서 Serializer에 관한 개념은 이렇다.
직렬변환, 딕셔너리의 형태를 JSON형태로 변경해주는 편리한 기능이다.
게시글 모델을 조회하고, 업로드 하는것에 관한 기능은 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)
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")