TypeError: объект типа 'JsonResponse' не имеет len () при возврате json значений. Но print (dicts) и print (json .dumps (dicts)) отображает значения, но когда возвращение JsonResponse (json .dumps (dicts), safe = False) показывает ошибку типа 'TypeError: объект типа' JsonResponse 'не имеет len ()', как решить эту проблему.
Ошибка
Internal Server Error: /api/v2/usernewslist/
Traceback (most recent call last):
File "C:\duklr\Duklr-web\venv\lib\site-
packages\django\core\handlers\exception.py", line 41, in inner
response = get_response(request)
File "C:\duklr\Duklr-web\venv\lib\site-
packages\django\core\handlers\base.py", line 187, in _get_response
response = self.process_exception_by_middleware(e, request)
File "C:\duklr\Duklr-web\venv\lib\site-
packages\django\core\handlers\base.py", line 185, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\duklr\Duklr-web\venv\lib\site-
packages\django\views\decorators\csrf.py", line 58, in wrapped_view
return view_func(*args, **kwargs)
File "C:\duklr\Duklr-web\venv\lib\site-packages\rest_framework\viewsets.py",
line 116, in view
return self.dispatch(request, *args, **kwargs)
File "C:\duklr\Duklr-web\venv\lib\site-packages\rest_framework\views.py",
line 495, in dispatch
response = self.handle_exception(exc)
File "C:\duklr\Duklr-web\venv\lib\site-packages\rest_framework\views.py",
line 455, in handle_exception
self.raise_uncaught_exception(exc)
File "C:\duklr\Duklr-web\venv\lib\site-packages\rest_framework\views.py",
line 492, in dispatch
response = handler(request, *args, **kwargs)
File "C:\duklr\Duklr-web\venv\lib\site-packages\rest_framework\mixins.py",
line 42, in list
page = self.paginate_queryset(queryset)
File "C:\duklr\Duklr-web\venv\lib\site-
packages\rest_framework\generics.py", line 173, in paginate_queryset
return self.paginator.paginate_queryset(queryset, self.request, view=self)
File "C:\duklr\Duklr-web\venv\lib\site-
packages\rest_framework\pagination.py", line 204, in paginate_queryset
self.page = paginator.page(page_number)
File "C:\duklr\Duklr-web\venv\lib\site-packages\django\core\paginator.py",
line 57, in page
number = self.validate_number(number)
File "C:\duklr\Duklr-web\venv\lib\site-packages\django\core\paginator.py",
line 46, in validate_number
if number > self.num_pages:
File "C:\duklr\Duklr-web\venv\lib\site-packages\django\utils\functional.py",
line 35, in __get__
res = instance.__dict__[self.name] = self.func(instance)
File "C:\duklr\Duklr-web\venv\lib\site-packages\django\core\paginator.py",
line 91, in num_pages
if self.count == 0 and not self.allow_empty_first_page:
File "C:\duklr\Duklr-web\venv\lib\site-
packages\django\utils\functional.py", line 35, in __get__
res = instance.__dict__[self.name] = self.func(instance)
File "C:\duklr\Duklr-web\venv\lib\site-packages\django\core\paginator.py",
line 84, in count
return len(self.object_list)
TypeError: object of type 'JsonResponse' has no len()
[29/Feb/2020 14:10:22] "GET /api/v2/usernewslist/ HTTP/1.1" 500 20471
Views.py
class UserNewsListingListViewSet(MobileNewsListViewSet):
def get_queryset(self):
queryset = self.queryset.filter(publish=True)
queryset = queryset.exclude(news_summary='')
# Filter News Provider
if self.request.GET.get('user_id'):
queryset = queryset.filter(posted_by__id=self.request.GET.get('user_id'))
# Filter News Category
if self.request.GET.get('news_type'):
queryset = queryset.filter(news_category__slug=self.request.GET.get('news_type'))
dicts = []
for query in queryset[:6]:
id = query.id
newstitle = query.news_title
news_summary = query.news_summary
slug = query.slug
news_image = query.news_image
news_provider = query.news_provider
news_page_url = query.news_page_url
newsdate = query.news_datetime
likescount = query.likes_count
mobile_news_summary = query.mobile_news_summary
for cat in query.news_category.all():
news_category = cat.news_category
data = {
"id":id,
"newstitle":newstitle,
"news_categories":news_category,
"news_summary":news_summary,
"slug":slug,
"news_image":news_image,
"news_provider":{
"id":query.news_provider.id,
"news_providers": query.news_provider.news_provider,
"url":query.news_provider.url,
"region":query.news_provider.region,
"image":str(query.news_provider.image),
"descriptions":query.news_provider.description,
"followers":query.news_provider.followers,
"slug":query.news_provider.slug,
"created_time":query.news_provider.created_time,
"publish":query.news_provider.publish
},
"news_page_url":news_page_url,
"newsdate":newsdate,
"likescount":likescount,
"mobile_news_summary":mobile_news_summary
}
# dat=json.dumps(data)
dicts.append(data)
return JsonResponse(json.dumps(dicts), safe=False)
При возврате кодов отображается ошибка типа
Traceback (most recent call last):
File "C:\duklr\Duklr-web\venv\lib\site-
packages\django\core\handlers\exception.py", line 41, in inner
response = get_response(request)
File "C:\duklr\Duklr-web\venv\lib\site-
packages\django\core\handlers\base.py", line 187, in _get_response
response = self.process_exception_by_middleware(e, request)
File "C:\duklr\Duklr-web\venv\lib\site-
packages\django\core\handlers\base.py", line 185, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\duklr\Duklr-web\venv\lib\site-
packages\django\views\decorators\csrf.py", line 58, in wrapped_view
return view_func(*args, **kwargs)
File "C:\duklr\Duklr-web\venv\lib\site-packages\rest_framework\viewsets.py",
line 116, in view
return self.dispatch(request, *args, **kwargs)
File "C:\duklr\Duklr-web\venv\lib\site-packages\rest_framework\views.py",
line 495, in dispatch
response = self.handle_exception(exc)
File "C:\duklr\Duklr-web\venv\lib\site-packages\rest_framework\views.py",
line 455, in handle_exception
self.raise_uncaught_exception(exc)
File "C:\duklr\Duklr-web\venv\lib\site-packages\rest_framework\views.py",
line 492, in dispatch
response = handler(request, *args, **kwargs)
File "C:\duklr\Duklr-web\venv\lib\site-packages\rest_framework\mixins.py",
line 45, in list
return self.get_paginated_response(serializer.data)
File "C:\duklr\Duklr-web\venv\lib\site-
packages\rest_framework\serializers.py", line 768, in data
ret = super(ListSerializer, self).data
File "C:\duklr\Duklr-web\venv\lib\site-
packages\rest_framework\serializers.py", line 262, in data
self._data = self.to_representation(self.instance)
File "C:\duklr\Duklr-web\venv\lib\site-
packages\rest_framework\serializers.py", line 686, in to_representation
self.child.to_representation(item) for item in iterable
File "C:\duklr\Duklr-web\venv\lib\site-
packages\rest_framework\serializers.py", line 530, in to_representation
ret[field.field_name] = field.to_representation(attribute)
File "C:\duklr\Duklr-web\venv\lib\site-packages\rest_framework\relations.py",
line 542, in to_representation
for value in iterable
File "C:\duklr\Duklr-web\venv\lib\site-packages\rest_framework\relations.py",
line 272, in to_representation
return value.pk
AttributeError: 'unicode' object has no attribute 'pk'
[02/Mar/2020 12:37:15] "GET /api/v2/usernewslist/ HTTP/1.1" 500 20224
при коде изменено
class UserNewsListingListViewSet(MobileNewsListViewSet):
def get_queryset(self):
queryset = self.queryset.filter(publish=True)
queryset = queryset.exclude(news_summary='')
# Filter News Provider
if self.request.GET.get('user_id'):
queryset = queryset.filter(posted_by__id=self.request.GET.get('user_id'))
# Filter News Category
if self.request.GET.get('news_type'):
queryset = queryset.filter(news_category__slug=self.request.GET.get('news_type'))
dicts = []
for query in queryset[:6]:
id = query.id
newstitle = query.news_title
news_summary = query.news_summary
slug = query.slug
news_image = query.news_image
news_provider = query.news_provider
news_page_url = query.news_page_url
newsdate = query.news_datetime
likescount = query.likes_count
mobile_news_summary = query.mobile_news_summary
for cat in query.news_category.all():
news_category = cat.id
data = {
"id":str(id),
"newstitle":str(newstitle),
"news_category":str(news_category),
"news_summary":str(news_summary),
"slug":str(slug),
"news_image":str(news_image),
"news_provider":{
"id":str(query.news_provider.id),
"news_providers": str(query.news_provider.news_provider),
"url":str(query.news_provider.url),
"region":str(query.news_provider.region),
"image":str(query.news_provider.image),
"descriptions":str(query.news_provider.description),
"followers":str(query.news_provider.followers),
"slug":str(query.news_provider.slug),
"created_time":str(query.news_provider.created_time),
"publish":str(query.news_provider.publish)
},
"news_page_url":str(news_page_url),
"newsdate":str(newsdate),
"likescount":str(likescount),
"mobile_news_summary":str(mobile_news_summary)
}
dat = json.dumps(data)
dicts.append(dat)
return dicts
Появляется такая ошибка, трассировка:
Traceback (most recent call last):
File "/home/test/.local/lib/python2.7/site-
packages/django/core/handlers/exception.py", line 41, in inner
response = get_response(request)
File "/home/test/.local/lib/python2.7/site-
packages/django/core/handlers/base.py", line 187, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/home/test/.local/lib/python2.7/site-
packages/django/core/handlers/base.py", line 185, in _get_response
response = wrapped_callback(request, *callback_args,
**callback_kwargs)
File "/home/test/.local/lib/python2.7/site-
packages/django/views/decorators/csrf.py", line 58, in wrapped_view
return view_func(*args, **kwargs)
File "/home/test/.local/lib/python2.7/site-
packages/rest_framework/viewsets.py", line 116, in view
return self.dispatch(request, *args, **kwargs)
File "/home/test/.local/lib/python2.7/site-
packages/rest_framework/views.py", line 495, in dispatch
response = self.handle_exception(exc)
File "/home/test/.local/lib/python2.7/site-
packages/rest_framework/views.py", line 455, in handle_exception
self.raise_uncaught_exception(exc)
File "/home/test/.local/lib/python2.7/site-
packages/rest_framework/views.py", line 492, in dispatch
response = handler(request, *args, **kwargs)
File "/home/test/.local/lib/python2.7/site-
packages/rest_framework/mixins.py", line 45, in list
return self.get_paginated_response(serializer.data)
File "/home/test/.local/lib/python2.7/site-
packages/rest_framework/serializers.py", line 768, in data
ret = super(ListSerializer, self).data
file "/home/test/.local/lib/python2.7/site-
packages/rest_framework/serializers.py", line 262, in data
self._data = self.to_representation(self.instance)
File "/home/test/.local/lib/python2.7/site-
packages/rest_framework/serializers.py", line 686, in
to_representation
self.child.to_representation(item) for item in iterable
File "/home/test/.local/lib/python2.7/site-
packages/rest_framework/serializers.py", line 517, in
to_representation
attribute = field.get_attribute(instance)
File "/home/test/.local/lib/python2.7/site-
packages/rest_framework/relations.py", line 536, in get_attribute
relationship = get_attribute(instance, self.source_attrs)
File "/home/test/.local/lib/python2.7/site-
packages/rest_framework/fields.py", line 101, in get_attribute
instance = getattr(instance, attr)
AttributeError: 'str' object has no attribute 'news_category'