首页 文章

为什么图像上传到django rest框架 endpoints 返回0 NO RESPONSE?

提问于
浏览
1

我在Django Rest Framework中创建了 endpoints ,我希望只有经过身份验证的用户才能创建和更改数据 . 我正在使用令牌认证 .

当我尝试更新Testik实例的profile_picture(通过PATCH方法)提供正确的凭据时 . (授权=令牌xxxxxxxxxxxxx),它工作,profile_picture更新并返回状态代码200 .

但是每当凭证错误或丢失时,它都不会返回错误401(未授权),我在django终端输出中看到错误:“PATCH / api / testik / 1 HTTP / 1.1”401 59“但我得到”状态0无响应“

所以我有这个模型:

from django.db import models

# Create your models here.
class Testik(models.Model):
    email = models.EmailField('email address', unique=True, db_index=True)
    first_name = models.CharField(max_length=50, blank=True)

    profile_picture = models.ImageField(upload_to='photos/testik',blank=True)

与相关的序列化器:

from models import Testik
from rest_framework import serializers

class TestikSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Testik
        fields = ('url', 'profile_picture','first_name')

和这个ViewSet:

from django.shortcuts import render
from serializers import TestikSerializer
from models import Testik
from rest_framework import mixins,permissions,viewsets,parsers

# Create your views here.

class TestikViewSet(mixins.RetrieveModelMixin,
                   mixins.UpdateModelMixin,
                   mixins.ListModelMixin,
                   mixins.CreateModelMixin,
                   mixins.DestroyModelMixin,
                   viewsets.GenericViewSet):
    permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
    serializer_class = (TestikSerializer)
    queryset = Testik.objects.filter()
    parser_classes = (parsers.MultiPartParser,parsers.JSONParser)

有没有人有一个我做错了什么或什么http请求(可能是特定的内容类型/我试过多部分或什么)我应该使用吗?

1 回答

  • 0

    对于文件上传,您需要使用 multipart/form-data 内容类型 .


    另外 PATCH 动词赢了't typically support file uploads. You' ll需要使用 PUT (替换)或 POST (创建)来处理它 .

相关问题