python - 无法从 Django Rest API 获取图像

标签 python django django-rest-framework

我正在学习 Django Rest Framework 并遇到了一些问题。

我有一个小型任务应用程序 API。

我可以在服务器上保存图像,但无法从 API 图像超链接获取图像。

我的模型.py

class Task(models.Model):
    task_name = models.CharField(max_length=30)
    task_desc = models.CharField(max_length=30)
    image = models.ImageField(upload_to = 'pic_folder/', default = 'pic_folder/None/no-img.jpg')

View .py

class TaskViewSet(viewsets.ModelViewSet):
    queryset = Task.objects.all()
    serializer_class = TaskSerializer

序列化器.py

class TaskSerializer(serializers.HyperlinkedModelSerializer):
    image = serializers.ImageField(
            max_length = None, use_url=True
        )   
    class Meta:
        model = Task
        fields = ('id','task_name','image')

设置.py

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

APP 结构:-

TaskAPI  (Base Dir)
    TaskAPP
     media

我可以成功发出 POST 请求,它显示正确的图像链接,但是当我点击图像链接时,出现错误。

enter image description here

错误:- enter image description here 请建议如何从链接中获取图像。

最佳答案

您没有在 urls.py 中包含 media url

from django.conf.urls.static import static
from django.conf import settings

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

参见 docs关于服务媒体和静态文件。

关于python - 无法从 Django Rest API 获取图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35890814/

相关文章:

python - 在 AWS 中使用 Python 中的 Lambda 将文件写入 S3

python - 让标准输出显示包含输入的调用脚本

python - (安装Python 3.6.1) SSLError : SSL: TLSV1_ALERT_UNKNOWN_CA tlsv1 alert unknown ca

python - 在modelForm中访问request.user

python - 多重继承和调用 super()

python - 变量未在 exec ('variable = value' 后定义)

相关领域的 Django 查询集

python - Django Rest Framework默认图像字段值返回验证

python - 如何使用 models.py 、 serializers.py 和 views.py 将解析的 json 数组值保存到 django python Rest api 中的数据库

python - 在 pytest-django 中每次测试后都会清理数据库