2016-10-07 11 views
2

APIビューを作成しようとしていますが、エラーが発生しています。誰も助けることができますか?'str'オブジェクトが呼び出し可能ではありませんDjango Rest Framework

urls.py:

app_name = 'ads' 
urlpatterns = [ 
    # ex: /ads/ 
    url(r'^$', views.ListBrand.as_view(), name='brand_list'), 
] 

views.py:

from rest_framework.views import APIView 
from rest_framework.response import Response 
from . import models 
from . import serializers 


class ListBrand(APIView): 
    def get(self, request, format=None): 
     brands = models.Brand.objects.all() 
     serializer = serializers.BrandSerializer(brands, many=True) 
     data = serializer.data 
     return Response(data) 

UPDATE:ここでエラーがされており、それは文字列のエラーです。私はどこから来ているのか分かりません。

TypeError at /api/v1/ads/ 
'str' object is not callable 
Request Method: GET 
Request URL: http://localhost/api/v1/ads/ 
Django Version: 1.10.2 
Exception Type: TypeError 
Exception Value:  
'str' object is not callable 
Exception Location: C:\Users\Leon\Desktop\esriom\lib\site-packages\rest_framework\views.py in <listcomp>, line 264 
Python Executable: C:\Users\Leon\Desktop\esriom\Scripts\python.exe 
Python Version: 3.5.2 
Python Path:  
['C:\\Users\\Leon\\Desktop\\esirom', 
'C:\\Users\\Leon\\Desktop\\esriom\\lib\\site-packages\\setuptools-18.1-py3.5.egg', 
'C:\\Users\\Leon\\Desktop\\esriom\\lib\\site-packages\\pip-7.1.0-py3.5.egg', 
'C:\\Users\\Leon\\Desktop\\esriom\\Scripts\\python35.zip', 
'C:\\Users\\Leon\\AppData\\Local\\Programs\\Python\\Python35-32\\DLLs', 
'C:\\Users\\Leon\\AppData\\Local\\Programs\\Python\\Python35-32\\lib', 
'C:\\Users\\Leon\\AppData\\Local\\Programs\\Python\\Python35-32', 
'C:\\Users\\Leon\\Desktop\\esriom', 
'C:\\Users\\Leon\\Desktop\\esriom\\lib\\site-packages'] 
Server time: Fri, 7 Oct 2016 12:44:04 -0500 

HERE TRACEBACKは

Environment: 


Request Method: GET 
Request URL: http://localhost/api/v1/ads/ 

Django Version: 1.10.2 
Python Version: 3.5.2 
Installed Applications: 
['rest_framework', 
'ads.apps.AdsConfig', 
'django.contrib.admin', 
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.messages', 
'django.contrib.staticfiles'] 
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 "C:\Users\Leon\Desktop\esriom\lib\site-packages\django\core\handlers\exception.py" in inner 
    39.    response = get_response(request) 

File "C:\Users\Leon\Desktop\esriom\lib\site-packages\django\core\handlers\base.py" in _get_response 
    187.     response = self.process_exception_by_middleware(e, request) 

File "C:\Users\Leon\Desktop\esriom\lib\site-packages\django\core\handlers\base.py" in _get_response 
    185.     response = wrapped_callback(request, *callback_args, **callback_kwargs) 

File "C:\Users\Leon\Desktop\esriom\lib\site-packages\django\views\decorators\csrf.py" in wrapped_view 
    58.   return view_func(*args, **kwargs) 

File "C:\Users\Leon\Desktop\esriom\lib\site-packages\django\views\generic\base.py" in view 
    68.    return self.dispatch(request, *args, **kwargs) 

File "C:\Users\Leon\Desktop\esriom\lib\site-packages\rest_framework\views.py" in dispatch 
    457.   request = self.initialize_request(request, *args, **kwargs) 

File "C:\Users\Leon\Desktop\esriom\lib\site-packages\rest_framework\views.py" in initialize_request 
    364.    authenticators=self.get_authenticators(), 

File "C:\Users\Leon\Desktop\esriom\lib\site-packages\rest_framework\views.py" in get_authenticators 
    264.   return [auth() for auth in self.authentication_classes] 

File "C:\Users\Leon\Desktop\esriom\lib\site-packages\rest_framework\views.py" in <listcomp> 
    264.   return [auth() for auth in self.authentication_classes] 

Exception Type: TypeError at /api/v1/ads/ 
Exception Value: 'str' object is not callable 
+0

あなたはどのようなエラーが出るのですか? – 1GDST

+0

エラーが発生している場所を推測しています。実際にエラーが発生したコード行を含め、エラートレースバック全体を投稿してください。 –

+0

モデルに '__str __(self)'関数がありますか?このように:https://docs.djangoproject.com/en/1.10/ref/models/instances/#str – 1GDST

答えて

4

私の問題は私のsettings.pyファイルにあったTOO THERE IS:

差分:

REST_FRAMEWORK = { 
-  'DEFAULT_AUTHENTICATION_CLASSES': { 
+  'DEFAULT_AUTHENTICATION_CLASSES': (
      'rest_framework.authentication.SessionAuthentication', 
-  } 
+  ), 
-  'DEFAULT_PERMISSION_CLASSES': { 
+  'DEFAULT_PERMISSION_CLASSES': (
      'rest_framework.permissions.IsAuthenticatedOrReadOnly', 
-  }, 
+  ), 
    } 
+0

問題があることを知っておいてよかったです。この問題は、次の条件のためです:https://github.com/tomchristie/django-rest-framework/blob/3.4.7/rest_framework/settings.py#L153、これは 'list'と' tuple'だけを考慮しますが、 'set'ではありません。 –

+1

違いは中括弧で、誰もが数分を費やしてその違いを精査している場合です! –

+0

Djangoの設定でタプルが優先される理由は不思議です。いくつかの小さな一定の時間/空間の節約を一覧に表示しますか? –

関連する問題