Django-Rest-Framework:__init __()需要1个参数,但给出了2个

7

我的错误类似于django error: __init__() takes exactly 1 argument (2 given),但是由于没有正确的答案,我现在找不到解决方法。所以,我再次提问。

在views.py中,我写了:

class JSONResponse(HttpResponse):
    """
    An HttpResponse that renders its content into JSON.
    """
    def __init__(self, data, **kwargs):
        content = JSONRenderer().render(data)
        kwargs['content_type'] = 'application/json'
        super(JSONResponse, self).__init__(content, **kwargs)

class SnippetListView(APIView):
    queryset = Snippet.objects.all()

    def get(self, request, format=None):
        users = self.queryset
        serializer = SnippetSerializer(users, many=True)
        return Response(serializer.data)

    def post(self, request, format=None):     
        serializer = SnippetSerializer(data=request.DATA)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
       else:
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

在 urls.py 文件中,我写下了:
from django.conf.urls import patterns, url
from rest_framework.urlpatterns import format_suffix_patterns
from snippets.views import *
urlpatterns = patterns('snippets.views',
    url(r'^snippets/$', SnippetListView.as_view()),
    url(r'^snippets/(?P<pk>[0-9]+)/$', 'snippets.views.SnippetDetailView'),
)

然后我运行python manage.py runserver,它显示了一个错误信息:ImportError at /snippets/

No module named snippets

但我在setting.py中导入代码片段。
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'snippets',

)

错误追踪如下:
模板渲染期间出错
在模板 E:\Python27\lib\site-packages\rest_framework\templates\rest_framework\base.html 中,第51行出现错误。
No module named snippets
41  <li class="dropdown">
42  <a href="#" class="dropdown-toggle" data-toggle="dropdown">
43  {{ user }}
44  <b class="caret"></b>
45  </a>
46  <ul class="dropdown-menu">
47  <li>{% optional_logout request %}</li>
48  </ul>
49  </li>
50  {% else %}
51  <li>{% optional_login request %}</li>   <----the error is here
52  {% endif %}
53  {% endblock %}
54  </ul>
55  </div>
56  </div>
57  </div>
58  {% endblock %}
59  
60  {% block breadcrumbs %}
61  <ul class="breadcrumb">
1个回答

29

你是否忘记使用as_view()?

url(r'^snippets/$', snippets.views.SnippetListView.as_view()),

如果出现错误,则为“无法导入snippets.views.SnippetListView.as_view()。父模块snippets.views.SnippetListView不存在。” - user504909
但实际上,SnippetListView是在snipets.views文件中定义的一个类。 - user504909
请导入它。 - ledzep2
我从django.conf.urls中导入它们,包括patterns和url。同时也从rest_framework.urlpatterns中导入format_suffix_patterns。我还从snippets.views中导入所有内容。我的urlpatterns是这样的: patterns('snippets.views', url(r'^snippets/$', 'SnippetListView.as_view()'), url(r'^snippets/(?P<pk>[0-9]+)/$', 'snippets.views.SnippetDetailView'), ) 但是出现了错误:无法导入snippets.views.SnippetListView.as_view()。因为父模块snippets.views.SnippetListView不存在。 - user504909
@user504909,你不应该引用 as_view 函数的调用。只需要写 SnippetListView.as_view() 就可以了。 - ledzep2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接