我在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 回答
对于文件上传,您需要使用
multipart/form-data
内容类型 .另外
PATCH
动词赢了't typically support file uploads. You' ll需要使用PUT
(替换)或POST
(创建)来处理它 .