想要从API返回图像的相对路径:
想要" /media/image.jpg
"格式,不是" http://0.0.0.1:8000/media.image.jpg
"将返回API
以下内容,获取完整的URL,即" http://0.0.0.1:8000/media.image.jpg
"格式
class ImageListAPIView(ListAPIView):
serializer_class = QuestionImageSerializer
queryset = QuestionImage.objects.all()
以及以下内容,获取正确输出即: 如何返回ListApiview的相对路径URL? 尝试将以下内容放入序列化器中,但是无法将图像上传到API。 ps: models.py: serializers.py:media/image.jpg
格式,。 class ImageAPIView(APIView):
def get(self, request, format=None):
QuestionImages = QuestionImage.objects.all()
SerializedData = QuestionImageSerializer(QuestionImages, many=True)
return Response({
'QeustionImages:': SerializedData.data
})
image = serializers.SerializerMethodField()
def get_image(self, obj):
return obj.image.url
class QuestionImage(models.Model):
image = models.ImageField(upload_to=question_directory_path)
class QuestionImageSerializer(ModelSerializer):
class Meta:
model = QuestionImage
fields= [
'id',
'image',
]
我假设您正在生产中使用Gunicorn或其他某些服务器,并将其放在Nginx或Apache后面。因此,为了从列表视图中获取正确的绝对URL,您需要在设置中添加以下内容。py
USE_X_FORWARDED_HOST = True
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
为了生成生成绝对的URL django从请求上下文中找到主机和端口。通过进行上述更改,您可以指示Django使用X-Forwhered-For-For-for header的值进行主机和端口。
您需要确保Nginx或Apache无论您使用的任何内容都应将这些标头向前传递。对于Nginx和Apache,您可以在此处找到指令https://www.nginx.com/resources/wiki/wiki/start/topics/examples/likeapache/