проблемы с django - PullRequest
       8

проблемы с django

0 голосов
/ 29 января 2019

Я создал API в django rest_framework, и я тестирую его с почтальоном. * У методов 1001 * проблем нет, но в PUT ,POST методах это дает некоторые ошибки.

Вот мое представление Book_list вviews.py:

class Book_list(mixins.ListModelMixin,
                mixins.CreateModelMixin,
                generics.GenericAPIView):
    queryset = Book.objects.all()
    serializer_class = Bookserializer

    def get(self,*args,**kwargs):
        return self.list(self,*args,**kwargs)

    def post(self,*args,**kwargs):
        return self.create(self,*args,**kwargs)

Вот мое представление Book_detail в views.py:

class Book_detail(mixins.RetrieveModelMixin,
                  mixins.UpdateModelMixin,
                  mixins.DestroyModelMixin,
                  generics.GenericAPIView):

    queryset = Book.objects.all()
    serializer_class = Bookserializer

    def get(self,*args,**kwargs):
        return self.retrieve(self,*args,**kwargs)

    def put(self,*args,**kwargs):
        return self.update(self,*args,**kwargs)

    def delete(self,*args,**kwargs):
        return self.destroy(self,*args,**kwargs)

, а вот мое Bookserializer в serializers.py`:

class Bookserializer(serializers.ModelSerializer):
    class Meta():
        model = Book
        fields = ('id','name','publisher',
                  'author','isbn','genere')

и вот мое приложение urls.py:

from django.urls import path , re_path ,register_converter,include
from rest_framework import routers
from . import views

urlpatterns = [

    path('Books' , views.Book_list.as_view() ,
    name = 'Book_L_2'),
    path('Book/<int:pk>' , views.Book_detail.as_view() ,
    name = 'Book_D_2'),
    path('Authors' , views.Author_list.as_view() ,
    name = 'Author_L_2'),
    path('Author/<int:pk>' , views.Author_detail.as_view() ,
    name = 'Author_D_2'),

]

, но когда я хочу POST после json (api2 / Books url) с POSTMAN :

{
        "name": "biganeh",
        "publisher": "ghoghnoos",
        "author": 2,
        "isbn": 4,
        "genere": "Horror"
    }

произошла эта ошибка:

 AttributeError at /api2/Books
'Book_list' object has no attribute 'data'

Это означает, что request.data не существует !?как это исправить?

1 Ответ

0 голосов
/ 29 января 2019

Поскольку вы заблокировали метод POST & PUT через параметры в классе Book_detail, вы указали только метод PUT, DELETE, GET.Это также один из способов заблокировать метод HTTP-запроса.Измените код, как показано ниже,

class Book_detail(mixins.RetrieveModelMixin,
              mixins.UpdateModelMixin,
              mixins.DestroyModelMixin,
              mixins.CreateModelMixin,
              mixins.UpdateModelMixin,
              generics.GenericAPIView):

queryset = Book.objects.all()
serializer_class = Bookserializer

Любой вопрос, перейдите по этой ссылке для Представления Mixins

Вместо этого я предлагаю указать, как вы можете использовать ModelViewset

...