Python DRF TypeError _uinit__;()正好接受1个参数(给定2个)

Python DRF TypeError _uinit__;()正好接受1个参数(给定2个),python,django,python-2.7,Python,Django,Python 2.7,当我试图通过我的web浏览器发出get请求时,我遇到了这个错误。这是我的第一个DRF项目,我试图制作一个api,以便能够在移动应用程序上使用它。我认为问题来自于我在视图中的获取。py 以下是一些代码片段和回溯: 型号.py 序列化程序.py 视图.py url.py 回溯 Environment: Request Method: GET Request URL: http://0.0.0.0:8000/api/expediteur/ Django Version: 1.7.1 Py

当我试图通过我的web浏览器发出get请求时,我遇到了这个错误。
这是我的第一个DRF项目,我试图制作一个api,以便能够在移动应用程序上使用它。我认为问题来自于我在视图中的获取。py 以下是一些代码片段和回溯:

型号.py

序列化程序.py

视图.py

url.py

回溯

Environment:


Request Method: GET
Request URL: http://0.0.0.0:8000/api/expediteur/

Django Version: 1.7.1
Python Version: 2.7.6
Installed Applications:
('django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'rest_framework',
 'api')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware')


Traceback:
File "/Library/Python/2.7/site-packages/Django-1.7.1-py2.7.egg/django/core/handlers/base.py" in get_response
  111.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)

Exception Type: TypeError at /api/expediteur/
Exception Value: __init__() takes exactly 1 argument (2 given)

你不能像那样创建URL。ApiView是一个类,您需要使用
as_view
classmethod并直接引用该类,而不是作为字符串:

url(r'^api/', api.views.ExpeViewSet.as_view()),

请显示您的URL.py。@DanielRoseman刚刚编辑了我的帖子。我知道我给的名字并没有使我的类成为视图集,但我犯了什么错误,我该如何解决这个问题?对不起,这个答案有误导性,我已经替换了它。感谢您的帮助,我刚刚修复了它,但现在我有了一个AttributeError'module'对象没有属性'views',我的进口有什么问题吗?
from django.shortcuts import render, get_object_or_404
from rest_framework import viewsets, status, HTTP_HEADER_ENCODING
from rest_framework.views import APIView
from rest_framework.response import Response
from api.serializers import ExpediteurSerializer, DestinataireSerializer, LettrePrioSerializer, TypeLettreRecoSerializer, LettreRecoSerializer, TimbrePrioSerializer, TimbreRecoSerializer
from api.models import Expediteur, Destinataire, LettrePrio, TypeLettreReco, LettreReco, TimbrePrio, TimbreReco

import json
import datetime

from django.http import HttpResponseRedirect, HttpResponse, Http404
from django.core.urlresolvers import reverse
from django.contrib.auth.decorators import user_passes_test
from django.contrib.auth import login
from django.core.exceptions import ObjectDoesNotExist
from django.views.decorators.csrf import csrf_exempt
from django.utils.timezone import get_current_timezone
from django.db.models.query import QuerySet
from rest_framework.generics import GenericAPIView

# Create your views here.

class ExpeViewSet(APIView):
    queryset = Expediteur.objects.all()
    serializer_class = ExpediteurSerializer

    def get(self, request):
        if request.GET.get("id"):
            queryset = Expediteur.objects.filter(id=request.GET["id"]).all()
        else:
            queryset = Expediteur.objects.all()
        serializer = self.serializer_class(queryset, many=True)
        return Response(serializer.data)

    def list(self,request):
          queryset  = self.Expediteur.objects.all()
          serializer = ExpediteurSerializer(self.get_queryset(), many=True)
          return Response(serializer.data)

    def post(self, request):
        serializer = self.serializer_class(data=request.DATA)
        return Response(status=status.HTTP_201_CREATED)
from django.conf.urls import patterns, include, url
from rest_framework import routers
from django.contrib import admin
import api

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'CUP.views.home', name='home'),
    # url(r'^blog/', include('blog.urls')),
    url(r'^admin/', include(admin.site.urls)),
    url(r'^api/', 'api.views.ExpeViewSet'),
)
Environment:


Request Method: GET
Request URL: http://0.0.0.0:8000/api/expediteur/

Django Version: 1.7.1
Python Version: 2.7.6
Installed Applications:
('django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'rest_framework',
 'api')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware')


Traceback:
File "/Library/Python/2.7/site-packages/Django-1.7.1-py2.7.egg/django/core/handlers/base.py" in get_response
  111.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)

Exception Type: TypeError at /api/expediteur/
Exception Value: __init__() takes exactly 1 argument (2 given)
url(r'^api/', api.views.ExpeViewSet.as_view()),