Zastanawiam się, jak mogę uzyskać mongoengine i djangoRESTframework do pracy ze sobą. Obecnie mój model jestUzyskiwanie mongoengine i reszta django rest do grania fajnie
from mongoengine import *
import datetime
class Blog(Document):
post_id = IntField(unique=True)
title = StringField(max_length=144, required=True)
date_created = DateTimeField(default=datetime.datetime.now)
body = StringField(required=True)
i mam serializer zdefiniowany jako
from rest_framework.views import APIView
from rest_framework.response import Response
from .models import *
class BlogList(APIView):
"""
Lists all blog posts, or creates a new post
"""
def get(self, request, format=None):
posts = Blog.objects.to_json()
return Response(posts)
Ale otrzymuję błąd
TypeError at /blog/
__init__() takes exactly 1 argument (2 given)
Request Method: GET
Request URL: http://127.0.0.1:8000/blog/
Django Version: 1.5.1
Exception Type: TypeError
Exception Value:
__init__() takes exactly 1 argument (2 given)
co daje następujące traceback
response = callback(request, *callback_args, **callback_kwargs)
Okazało się, że moim problemem było to, że nie miałem pliku .as_view() w moim pliku urls.py. Dziwne jest to, że nie zawsze potrzebowałem tego do widoków przy użyciu restlib2. – user1876508
Wygląda na to, że restlib2 Klasy 'Resource' są zwykłymi widokami, które można wywoływać, tzn.' Resource() 'wywołuje po prostu' Resource.dispatch() 'podczas gdy Django REST Frameworks używa widoków opartych na klasach Django (http://django-rest-framework.org /api-guide/views.html i https://docs.djangoproject.com/en/dev/topics/class-based-views/), które wymagają użycia 'as_view()'. –