2016-12-07 19 views
2

私は自分のサーバーを実行して、私はエラーを取得するアプリケーションのURLを呼び出すとDjangoの1.10 を使用して簡単なのREST APIを開発しています:はTypeError:__init __()は1つの位置引数を取りますが、2が与えられた

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

GET /デモ/ HTTP/1.1" 500 64736

トレースバック

Environment: 
Request Method: GET 
Request URL: http://localhost:8000/demo/ 

Django Version: 1.10.4 
Python Version: 3.5.2 
Installed Applications: 
['django.contrib.admin', 
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'mydemoapp', 
'rest_framework'] 
Installed Middleware: 
['django.middleware.security.SecurityMiddleware', 
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.common.CommonMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware', 
'django.middleware.clickjacking.XFrameOptionsMiddleware'] 

Traceback: 

    File "/home/aqib/DjangoProject/mydemoenv/lib/python3.5/site- packages/django/core/handlers/exception.py" in inner 
    39. response = get_response(request) 

    File "/home/aqib/DjangoProject/mydemoenv/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response 
    187. response = self.process_exception_by_middleware(e, request) 

    File "/home/aqib/DjangoProject/mydemoenv/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response 
    185. response = wrapped_callback(request, *callback_args, **callback_kwargs) 

    Exception Type: TypeError at /demo/ 
    Exception Value: __init__() takes 1 positional argument but 2 were given 

models.py

from django.db import models 

class ProfileModel(models.Model): 
    name = models.CharField(max_length=30, blank=False, default='Your Name') 
    address = models.CharField(max_length=100, blank=True) 
    contact = models.IntegerField() 

    def __str__(self): 
     return '%s %s' % (self.name, self.address) 

views.py

from django.shortcuts import render 
from rest_framework import viewsets 
from mydemoapp.models import ProfileModel 
from .serializers import ProfileSerializer 

class ProfileView(viewsets.ModelViewSet): 
    profile = ProfileModel.objects.all() 
    serializer_class = ProfileSerializer 

serializers.py

from .models import ProfileModel 
from rest_framework import serializers 

class ProfileSerializer(serializers.ModelSerializer): 

    class Meta: 
     model = ProfileModel 
     fields = ('name', 'address', 'contact') 

urls.py(アプリケーションURL)

from django.conf.urls import url 
from mydemoapp import views 

urlpatterns = [ 
url(r'^$', views.ProfileView), 
] 

urls.py(プロジェクトのURL)

from django.conf.urls import url, include 
from django.contrib import admin 

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^demo/', include('mydemoapp.urls')), 
] 
+2

Djangoを使用する理由はありますか?単純なREST APIのために過度と思われる –

+3

より完全なトレースバック/例がありますか?これはいつ実行されますか?どのファイルですか?何を呼んだら? – Goodies

+0

@ cricket_007関連はありませんが、真実ではありません。 – Goodies

答えて

2

あなたはViewSetのURLを間違って使用しています。これはあなたのビューが同様に間違っているコメント

Now i get AssertionError: base_name argument not specified, and could not automatically determine the name from the viewset, as it does not have a .queryset attribute.

に答えるhttp://www.django-rest-framework.org/api-guide/routers/

を続きを読む正しい方法

# project/urls.py 
from django.conf.urls import url, include 
from django.contrib import admin 
from rest_framework import routers 
from mydemoapp import views 

router = routers.DefaultRouter() 

router.register(r'demo', views.ProfileView) 

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^', include(router.urls)), 
] 

です。それはspicifyする必要がありますquerysetprofile

class ProfileView(viewsets.ModelViewSet): 
    queryset = ProfileModel.objects.all() # <-- here 
    serializer_class = ProfileSerializer 
+0

今、AssertionError: 'base_name'引数が指定されておらず、' .queryset'属性を持たないため、ビューセットから名前を自動的に判断できませんでした。 –

+0

@MohdAqib更新された応答を読む –

+0

これは機能しています。ご助力ありがとうございます。なぜ**クエリーセット**はデータベースからデータを取り出すことが義務付けられているのですか? –

関連する問題