TypeError:as_view() - Django

时间:2017-06-14 18:59:24

标签: python django web-services django-rest-framework geodjango

我收到了一个错误。

我没有想法如何解决它,看看,这是错误:

TypeError: as_view() takes 1 positional argument but 2 were given

您可以看到我的" model.py"的代码。页。

from django.db import models
from django.contrib.gis.db import models


class RoadsLines(models.Model):
    gid = models.IntegerField()
    geom = models.MultiLineStringField()

    def __str__(self):              # __unicode__ on Python 2
        return '%s %s' % (self.gid, self.geom)

您可以看到我的" views.py"的代码。页。

from django.shortcuts import render
# Create your views here.
from django.shortcuts import render
from rest_framework import generics
from world.models import RoadsLines
from world.serializers import RoadsLinesSerializer


class ListCreateRoadsLines(generics.ListCreateAPIView):
    queryset = RoadsLines.objects.all()
    serializer_class = RoadsLinesSerializer

您可以看到我的" urls.py"的代码。页。

from django.conf.urls import url, include
from rest_framework import routers, serializers, viewsets
from world import views

# Routers provide an easy way of automatically determining the URL conf.
router = routers.DefaultRouter()
router.register(r'Roads', views.ListCreateRoadsLines)

# Wire up our API using automatic URL routing.
# Additionally, we include login URLs for the browsable API.
urlpatterns = [
    url(r'^', include(router.urls)),
    url(r'^api/', include('rest_framework.urls', namespace='rest_framework'))
]

我做错了什么?

提前谢谢!

1 个答案:

答案 0 :(得分:3)

ListCreateRoadsLines是一个视图,而不是一个视图集。您应该将它包含在您的网址模式中,而不是尝试注册它:

urlpatterns = [
    url(r'^Roads$', views.ListCreateRoadsLines.as_view()),
    url(r'^', include(router.urls)),
    url(r'^api/', include('rest_framework.urls', 
    namespace='rest_framework'))
]