После обновления с DRF версии 3.0 до версии 3.3.3, я получаю 405 (метод не разрешен) при попытке создать модель с использованием метода POST.Django Rest Framework, возвращает 405 на POST
и я не могу уловить запрос на отладчике, чтобы выяснить, где он идет не так.
мои настройки ФПИ в проекте/settings.py:
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGINATE_BY' : 10
}
мои urlpatterns в проекте/urls.py
urlpatterns = [
...
url(r'^api/v1/seeds/', include('seed.urls')),
...
url('^.*$', IndexView.as_view(), name='index')
]
мои urlpatterns в проекте/семян/urls.py:
from django.conf.urls import url, include
from rest_framework import routers
from seed.views import SeedViewSet
router = routers.SimpleRouter()
router.register(r'^', SeedViewSet)
urlpatterns = [
url(r'^', include(router.urls))
]
мой проект/семена/views.py
from seed.serializers import SeedSerializer
from seed.models import Seed
from rest_framework import viewsets
class SeedViewSet(viewsets.ModelViewSet):
queryset = Seed.objects.all()
serializer_class = SeedSerializer
# permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
def perform_create(self, serializer):
serializer.save(user=self.request.user)
return super(SeedViewSet, self).perform_create(serializer)
мой проект/семян/serializer.py
from authentication.serializers import AccountSerializer
from rest_framework import serializers
from seed.models import Seed
class SeedSerializer(serializers.ModelSerializer):
user = AccountSerializer(read_only=True, required=False)
class Meta:
model = Seed
fields = ('id', 'user', 'jobs', 'list_name', 'proxyType', 'created_at', 'updated_at')
read_only_fields = ('id', 'user', 'jobs', 'created_at', 'updated_at')
, что я мог бы сделать неправильно? или это что-то, что я должен делать по-другому из-за обновления?
редактировать и я использую angularJs опубликовать в API, а вот моя функция внутри моей службы:
function create(list_name, proxyType) {
return $http.post('/api/v1/seeds/', {
list_name: list_name,
proxyType: proxyType
});
}
Вы можете воссоздать ошибку с помощью теста python 'rest_framework'? Если да, можете ли вы добавить к этому вопросу неисправный тестовый код, так что более ясно, что происходит. –
Для меня кажется, что у вас должен быть метод 'create' вместо' perform_create', поскольку 'create' принадлежит [ModelViewSet] (http://www.django-rest-framework.org/api-guide/viewsets/) и 'perform_create' принадлежит [GenericAPIView] (http://www.django-rest-framework.org/api-guide/generic-views/#genericapiview), но это всего лишь предположение – fodma1
@AaronLelevier, можете ли вы показать мне, как сделать это? – Soufiaane