Python UpdateAPIView不工作:方法“;“补丁”;不准
我使用Django和Django REST框架来实现一个RESTful API 我现在所拥有的: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
- A
模型ContentEntry
- 我的
模型的ContentEntry
序列化程序ContentEntryCreateUpdateSerializer
- 一个
视图来创建一些contentrycreate
ieContentEntry
查看更新contentryupdate
iesContentEntry
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'
]
}