2016-12-14 4 views
0

Я не могу сделать PUT работы в рамках отдыха Джанго, я могу GET, POST, DELETE операции.Невозможно сделать PUT операцию -DjangoRESTFramework

Это ошибка Image Я попытался с помощью @api_view но и его нет, я в основном отсылаем djangorestframework сайт

Ниже мой код:

serializers.py

from rest_framework import serializers 
from snippets.models import Snippet 
#from django.contrib.auth.models import * 

class SnippetSerializer(serializers.ModelSerializer): 
      class Meta: 
       model = Snippet 
       fields = ('id','title','code') 

Модели.py

from __future__ import unicode_literals 
from django.db import models 

# Create your models here. 


class Snippet(models.Model): 
    created = models.DateTimeField(auto_now_add=True) 
    title = models.CharField(max_length=100, blank=True, default='') 
    code = models.CharField(max_length=100, blank=True, default='') 


class Meta: 
    ordering = ('created',) 

Views.py

from rest_framework import viewsets 
from rest_framework.decorators import api_view 
from snippets.serializers import SnippetSerializer 

    class SnippetViewSet(viewsets.ModelViewSet): 
     """ 
     API endpoint that allows users to be viewed or edited. 
     """ 
     queryset = Snippet.objects.all().order_by('id') 
     serializer_class = SnippetSerializer 

urls.py

rom django.conf.urls import url, include 
from rest_framework import routers 
from django.contrib import admin 
from snippets import views 




router = routers.DefaultRouter() 
router.register(r'snippet', views.SnippetViewSet) 


urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^', include(router.urls)), 
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')), 

] 

ответ

0

Глядя на документацию DefaultRouter, похоже, что PUT метод может быть использован только с {basename}-detail типа URL-адресов.

Пока вы используете это устройство непосредственно по адресу /snippet url, если это разрешено.

+0

что мне нужно ввести вместо {basename} -detail. Я прочитал эту документацию, но не получил ее –

+1

Это означает, что вы можете использовать метод 'PUT' для определенного фрагмента, который вы уже создали. Итак, предположим, что идентификатор этого фрагмента - «123», вы можете попробовать получить доступ к нему с помощью '/ snippet/123', а затем использовать метод PUT на этом URL-адресе. – AKS

Смежные вопросы