python - Error when updating function-based views to class-based views in Django Rest Framework -


i've been in process of running through tutorials on django rest framework build simple todo list app.

when transitioned function-based view class-based view, started getting stack trace django , http calls started failing.

i'm using virtualenv isolate dependencies, , using python 3.5.2.

anyone have ideas what's going on, or how resolve error?

i'm chalking configuration error or version mismatch, i'm not sure start.

/views.py:

from django.http import http404 list.models import list list.serializers import listserializer rest_framework.views import apiview rest_framework.response import response rest_framework import status  class listsview(apiview):         """         list lists.         """         def get(self, request, format=none):                 lists = list.objects.all()                 serializer = listserializer(lists, many=true)                 return response(serializer.data)          ... 

/urls.py

from django.conf.urls import url rest_framework.urlpatterns import format_suffix_patterns list import views  urlpatterns = [     url(r'^lists/$', views.listsview),     url(r'^lists/(?p<pk>[0-9]+)/$', views.listview),     url(r'^lists/(?p<list>[0-9]+)/items/$', views.listitemsview),     url(r'^lists/(?p<list>[0-9]+)/items/(?p<pk>[0-9]+)/$', views.listitemview), ]  urlpatterns = format_suffix_patterns(urlpatterns) 

input:

curl http://localhost:8000/lists/ 

trace:

internal server error: /lists/ traceback (most recent call last):   file "<pwd>/env/lib/python3.5/site-packages/django/core/handlers/exception.py", line 39, in inner     response = get_response(request)   file "<pwd>/env/lib/python3.5/site-packages/django/core/handlers/base.py", line 249, in _legacy_get_response     response = self._get_response(request)   file "<pwd>/env/lib/python3.5/site-packages/django/core/handlers/base.py", line 187, in _get_response     response = self.process_exception_by_middleware(e, request)   file "<pwd>/env/lib/python3.5/site-packages/django/core/handlers/base.py", line 185, in _get_response     response = wrapped_callback(request, *callback_args, **callback_kwargs) typeerror: __init__() takes 1 positional argument 2 given [29/aug/2016 00:03:32] "get /lists/ http/1.1" 500 61615 

env:

python 3.5.2 

requirements:

django==1.10 django-lint==2.0.4 djangorestframework==3.4.6 logilab-astng==0.24.3 logilab-common==1.2.2 psycopg2==2.6.2 pygments==2.1.3 pylint==0.28.0 six==1.10.0 

@sergeygornostaev had right intuition @ , post urls.py.

in refactor function-based views class-based views, neglected call as_view() on views when updated routing.

before: url(<pattern>, views.listsview)

after: url(<pattern>, views.listview.as_view())

this resolved error.


full /urls.py before:

from django.conf.urls import url rest_framework.urlpatterns import format_suffix_patterns list import views  urlpatterns = [     url(r'^lists/$', views.listsview),     url(r'^lists/(?p<pk>[0-9]+)/$', views.listview),     url(r'^lists/(?p<list>[0-9]+)/items/$', views.listitemsview),     url(r'^lists/(?p<list>[0-9]+)/items/(?p<pk>[0-9]+)/$', views.listitemview), ]  urlpatterns = format_suffix_patterns(urlpatterns) 

full /urls.py after:

from django.conf.urls import url rest_framework.urlpatterns import format_suffix_patterns list import views  urlpatterns = [     url(r'^lists/$', views.listsview.as_view()),     url(r'^lists/(?p<pk>[0-9]+)/$', views.listview.as_view()),     url(r'^lists/(?p<list>[0-9]+)/items/$', views.listitemsview.as_view()),     url(r'^lists/(?p<list>[0-9]+)/items/(?p<pk>[0-9]+)/$', views.listitemview.as_view()), ]  urlpatterns = format_suffix_patterns(urlpatterns) 

Comments

Popular posts from this blog

loops - Spock: How to use test data with @Stepwise -

amazon web services - S3 Pre-signed POST validate file type? -