인간세상의 종말이 도래해따/오류
[Django] ImageField의 media 경로를 일부만 받아오는 오류
민곰
2024. 1. 16. 19:17
728x90
개발환경: Django + Reactjs + Mysql
# model.py
def get_image_path(instance, filename):
today = now()
return 'avatar/user/{}/{}/{}/{}_{}'.format(today.year, today.month, today.day, instance.name, filename)
class User(models.Model):
...
avatar = ImageField(upload_to=get_image_path(), blank=True, null=True)
...
avatar란 필드에서 경로를 DB에 적힌 그대로 /avatar/2024/01/16/user1_image.png 로 가져오는 바람에 클라이언트에서 보여줄 때 제대로 경로를 가져오지 못하는 오류가 있었다.
오류: /avatar/user/2024/01/16/user1_image.png
정상: http://localhost:8000/media/avatar/user/2024/01/16/user1_image.png
view.py 에서 get 메소드의 Response객체를 구성해줄 때, context값을 추가해주니 해결되었다.
# view.py
class UserAPI(generics.RetrieveAPIView):
permission_classes = [permissions.IsAuthenticated]
serializer_class = UserSerializer
def get(self, request):
id = self.request.query_params.get('id')
user = User.objects.get(id=id)
user_history = UserHistory.objects.all().filter(user_id=id)
print(user.id, user_history)
return Response({
"user": UserSerializer(user, context=self.get_serializer_context()).data,
"history": UserHistorySerializer(user_history, many=True).data,
"detail":"ok",
}, status=status.HTTP_200_OK)
728x90