#django #django-rest-framework #django-views
#django #django-rest-framework #django-просмотры
Вопрос:
в моем проекте Django Rest Framwork у меня есть следующее представление:
class RegistrationView(APIView):
def post(self, request, format=None):
data = {}
# check if email exists
...
# check if username exists
...
# at this point, we know everything is ok -> the serializer can do its work
serializer = RegistrationSerializer(data = request.data)
if serializer.is_valid():
account = serializer.save()
data['response'] = 'registered new user'
data['id'] = account.id
data['email'] = account.email
data['username'] = account.username
data['profile_pic'] = account.profile_pic <--- HERE the problem occurs!!
data['date_joined'] = account.date_joined
token = Token.objects.get(user=account)
data['token'] = token.key
else:
data = serializer.errors
return Response(data)
Я попытался поместить результат процесса регистрации в data
словарь, который затем возвращается в качестве ответа пользователю. Но в строке, где у меня есть data['profile_pic'] = account.profile_pic
исключение, возникает сообщение об этом:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x89 in position 0: invalid start byte
profile_pic
Поле Account
модели — это a FileField
, как вы можете видеть в следующем:
class Account(AbstractBaseUser):
...
profile_pic = models.FileField(upload_to='Images/',default='Images/None/placeholder.jpg')
Как я могу получить значение FileField
, которое в основном указывает на изображение профиля Account
.
Комментарии:
1. Вы можете использовать URL-адрес, верно?
2. какой URL-адрес вы имеете в виду?
Ответ №1:
Использовать URL файлов:
data['profile_pic'] = account.profile_pic.url