首页 > 解决方案 > 无法从 django rest 框架 url 获取图像

问题描述

我已经设置了我的 django rest 框架服务器,我想在其中上传一些新闻和他们的图片。实际上,我可以上传新闻和图片,因为我在服务器文件系统上检索它们,但是当我请求新闻列表时,我得到一个图片 url,当粘贴到我的浏览器中时,它显示“未找到请求的资源在这台服务器上”。下面报告一些代码。

模型.py

class News(models.Model):
    author = models.CharField(max_length=50)
    title = models.CharField(max_length=150)
    content = models.CharField(max_length=10000)
    image = models.ImageField(upload_to='news', blank=True, null=True)
    created = models.DateField(auto_now_add=True)

    def __str__(self):
        return "{}".format(self.title)

序列化程序.py

class NewsSerializer(serializers.ModelSerializer):
    class Meta:
         model = News
         fields = '__all__'

设置.py

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

视图.py

class GetNews(generics.ListAPIView):
    queryset = News.objects.all()
    serializer_class = NewsSerializer

    def post(self, request):        
        author = request.data['author']
        title = request.data['title']
        content = request.data['content']
        try:
            image = request.data['image']
        except KeyError:
            raise ParseError('Request has no resource file attached')
        news = News.objects.create(image=image, author=author, title=title, content=content)

        return Response("News successfully uploaded.", status=status.HTTP_200_OK)

    def delete(self, request):
        token = request.META.get('HTTP_AUTHORIZATION')
        if not check_token(token):
            return JsonResponse({'message': 'Unauthorized!'}, status=status.HTTP_401_UNAUTHORIZED)

        news = News.objects.get(id=request.data['id'])
        news.delete() 

        return JsonResponse({'message': 'News was deleted successfully!'}, status=status.HTTP_204_NO_CONTENT)

网址.py

urlpatterns = [
    ...
    path('news', views.GetNews.as_view())
]

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

标签: pythondjangoresthttpdjango-rest-framework

解决方案


推荐阅读