오늘의 배운 것
- 장고 심화 - 4주차
장고 심화 강의 프로젝트
https://github.com/didjsrne/drf_project
** 이미지 파일 넣기 - ImageField
https://docs.djangoproject.com/en/4.1/ref/models/fields/#django.db.models.ImageField
FileField의 속성을 상속, 업로드된 파일이 이미지인지 추가적으로 확인하는 필드
Pillow 모듈 필요
pip install Pillow
settings.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 += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
SNS, 사물인식 프로젝트때는 다른 팀원님이 사용해서 눈으로 훑고 지나갔던 이미지 필드 추가에 대해 처음부터 짚고 넘어가니까 확실히 느낌이 더 확실하게 다가오는 느낌이다.
트러블슈팅
articles - serializers.py
from rest_framework import serializers
from articles.models import Article, Comment
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", "updated_at", "user")
class CommentSerializer(serializers.ModelSerializer):
class Meta:
model = Comment
fields = '__all__'
class CommentCreateSerializer(serializers.ModelSerializer):
class Meta:
model = Comment
fields = ("content",) # 하나만 넣어도 ,(콤마) 무조건!
SerializerMethodField와 get_user 함수를 통해 user_id로 표시되는 항목을 email로 표시하는것 ok
사용자 id를 구분하기 위해 fields를 '__all__'에서 원하는 필드만 솎아내는게 아직 이해가 좀 덜 된것 같다..
이렇게 했을때 정확히 어떻게 달라지는지 찾아보면 좋을듯