Python UpdateAPIView不工作:方法“;“补丁”;不准

Python UpdateAPIView不工作:方法“;“补丁”;不准,python,django,rest,django-rest-framework,Python,Django,Rest,Django Rest Framework,我使用Django和Django REST框架来实现一个RESTful API 我现在所拥有的: AContentEntry模型 我的ContentEntry模型的ContentEntryCreateUpdateSerializer序列化程序 一个contentrycreate视图来创建一些ContentEntryie contentryupdate查看更新ContentEntryies 代码如下: from django.db import models from rest_framewo

我使用Django和Django REST框架来实现一个RESTful API

我现在所拥有的:

  • A
    ContentEntry
    模型
  • 我的
    ContentEntry
    模型的
    ContentEntryCreateUpdateSerializer
    序列化程序
  • 一个
    contentrycreate
    视图来创建一些
    ContentEntry
    ie
  • contentryupdate
    查看更新
    ContentEntry
    ies
代码如下:

from django.db import models
from rest_framework import serializers
from rest_framework import generics
from rest_framework.views import APIView
from my_api_app import views


# models.py
class ContentEntry(models.Model):
    content = models.ForeignKey(Content)
    quantity = models.IntegerField()
    container = models.ForeignKey(Container, related_name='content_entries')


# serializers.py
class ContentEntryCreateUpdateSerializer(serializers.ModelSerializer):
    class Meta:
        model = ContentEntry
        fields = ('id', 'content', 'quantity', 'container')


# views.py
class ContentEntryCreate(generics.CreateAPIView):
    queryset = ContentEntry.objects.all()
    serializer_class = ContentEntryCreateUpdateSerializer


# views.py
class ContentEntryUpdate(generics.UpdateAPIView):
    queryset = ContentEntry.objects.all()
    lookup_field = 'id'
    serializer_class = ContentEntryCreateUpdateSerializer


# urls.py
urlpatterns = [
    url(r'content-entry', views.ContentEntryCreate.as_view()),
    url(r'content-entry/(?P<id>\d+)$', views.ContentEntryUpdate.as_view()),
]
正如您在
Allow
属性中所看到的,服务器似乎只允许使用
POST
OPTIONS
方法

这很奇怪,因为
泛型。UpdateAPIView
定义了
put
patch
方法

我不认为这是许可问题,因为我允许一切:

# settings.py
REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.AllowAny'
    ]
}

我应该怎么做才能允许HTTP
补丁和
放置方法

请确保用开始和结束(^和$symbols)标记URL

这里发生的事情没有结束标记,
r'content-entry'
匹配/content-entry/4/,因此调用creation视图

使用:
r'^content entry$”
r'^content entry/(?p\d+)$”

# settings.py
REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.AllowAny'
    ]
}