Tôi tự hỏi làm thế nào tôi có thể nhận được mongoengine và djangoRESTframework để làm việc với nhau. Hiện nay, mô hình của tôi làBắt mongoengine và django phần còn lại khuôn khổ để chơi đẹp
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)
và tôi đã serializer định nghĩa là
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)
Nhưng tôi nhận được lỗi
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)
mang đến cho traceback sau
response = callback(request, *callback_args, **callback_kwargs)
Hóa ra vấn đề của tôi là tôi không có tệp .as_view() trong tệp urls.py của mình. Điều kỳ lạ là tôi không phải lúc nào cũng cần nó cho các khung nhìn bằng cách sử dụng restlib2. – user1876508
Có vẻ như các lớp 'Resource' của restlib2 là các dạng xem cũ có thể gọi được, nghĩa là' Resource() 'chỉ gọi' Resource.dispatch() 'trong khi khung công tác REST của Django sử dụng Chế độ xem dựa trên Lớp của Django (http://django-rest-framework.org /api-guide/views.html và https://docs.djangoproject.com/en/dev/topics/class-based-views/) yêu cầu sử dụng 'as_view()'. –