'str' object is not callable Django Rest Framework
NickName:Leon Wright Ask DateTime:2016-10-08T02:04:41

'str' object is not callable Django Rest Framework

I'm trying to create an API view but I'm getting an error. Can anyone help?

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: HERE IS THE ERROR, it is a string error. And I can't seem to find where its coming from.

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 IS THERE TRACEBACK TOO

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

Copyright Notice:Content Author:「Leon Wright」,Reproduced under the CC 4.0 BY-SA copyright license with a link to the original source and this disclaimer.
Link to original article:https://stackoverflow.com/questions/39923384/str-object-is-not-callable-django-rest-framework

Answers
Leon Wright 2016-10-07T19:00:14

My problem was in my settings.py file:\n\nDiff:\n\n REST_FRAMEWORK = {\n- 'DEFAULT_AUTHENTICATION_CLASSES': {\n+ 'DEFAULT_AUTHENTICATION_CLASSES': (\n 'rest_framework.authentication.SessionAuthentication',\n- }\n+ ),\n- 'DEFAULT_PERMISSION_CLASSES': {\n+ 'DEFAULT_PERMISSION_CLASSES': (\n 'rest_framework.permissions.IsAuthenticatedOrReadOnly',\n- },\n+ ),\n }\n",


Steven 2018-07-13T11:41:23

Just want to give an example from the previous correct answers with Django v2.0.6 and Django REST framework v3.8.2.\n\nFor example in settings.py:\n\nREST_FRAMEWORK = {\n 'DEFAULT_AUTHENTICATION_CLASSES': {\n 'rest_framework.authentication.BasicAuthentication',\n 'rest_framework.authentication.SessionAuthentication',\n }\n }\n\n\nChange:\n\n'DEFAULT_AUTHENTICATION_CLASSES': {\n 'rest_framework.authentication.BasicAuthentication',\n 'rest_framework.authentication.SessionAuthentication',\n }\n\n\nInto:\n\n'DEFAULT_AUTHENTICATION_CLASSES': (\n 'rest_framework.authentication.BasicAuthentication',\n 'rest_framework.authentication.SessionAuthentication',\n )\n\n\nBy just replacing the \"{ }\" with \"( )\".",


abdelrahman aboneda 2022-10-23T21:20:35

if you are using simple_jwt also check this , don't use these brackets {} but () and add comma at the end\n SIMPLE_JWT = {\n 'AUTH_HEADER_TYPES': ('JWT',),\n 'ACCESS_TOKEN_LIFETIME': timedelta(minutes=100),\n# 'ROTATE_REFRESH_TOKENS': False,\n# 'BLACKLIST_AFTER_ROTATION': False,\n# 'UPDATE_LAST_LOGIN': False,\n 'AUTH_TOKEN_CLASSES': ('rest_framework_simplejwt.tokens.AccessToken',),\n}\n",


More about “'str' object is not callable Django Rest Framework” related questions