提供AttributeError int对象的Django序列化程序没有属性_meta

时间:2019-08-30 17:18:00

标签: django python-3.x django-serializer django-jsonfield

我试图通过ajax调用来调用django视图,而django视图调用了第三方API,并将第三方API给出的响应返回给ajax调用。但是在收到响应后,我遇到了以下错误

File "/home/sachinmukherjee/Coading/Developement/MovieRecommender/recommender/lib/python3.5/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/home/sachinmukherjee/Coading/Developement/MovieRecommender/recommender/lib/python3.5/site-packages/django/core/handlers/base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/home/sachinmukherjee/Coading/Developement/MovieRecommender/recommender/lib/python3.5/site-packages/django/core/handlers/base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/sachinmukherjee/Coading/Developement/MovieRecommender/recommender/lib/python3.5/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
    return view_func(*args, **kwargs)
  File "apps/apirequest/views.py", line 20, in trendingenglish
    return JsonResponse(serializers.serialize('json', data), safe=False)
  File "/home/sachinmukherjee/Coading/Developement/MovieRecommender/recommender/lib/python3.5/site-packages/django/core/serializers/__init__.py", line 128, in serialize
    s.serialize(queryset, **options)
  File "/home/sachinmukherjee/Coading/Developement/MovieRecommender/recommender/lib/python3.5/site-packages/django/core/serializers/base.py", line 94, in serialize
    concrete_model = obj._meta.concrete_model
AttributeError: 'int' object has no attribute '_meta'

这是 view.py 文件

中用于view功能的代码
from django.shortcuts import render, redirect
from django.http import HttpResponse, JsonResponse
from django.views.decorators.csrf import csrf_exempt
from django.conf import settings
import http.client
from django.core import serializers

# Create your views here.
URL = settings.TMDB_URL
API_KEY = settings.TMDB_API_KEY

@csrf_exempt
def trendingenglish(request):
    request_url = URL + "trending/all/day?api_key=" + API_KEY
    conn = http.client.HTTPSConnection("api.themoviedb.org")
    payload = "{}"
    conn.request("GET", request_url, payload)
    res = conn.getresponse()
    data = res.read()
    return JsonResponse(serializers.serialize('json', data), safe=False)

来自第三方API的json响应如下

b'{"page":1,"results":[{"adult":false,"backdrop_path":"/cjRUhKyt2Jo3V1KNzc5tpPNfccG.jpg","genre_ids":[878,28],"id":320288,"original_language":"en","original_title":"Dark Phoenix","overview":"The X-Men face their most formidable and powerfull.","poster_path":"/kZv92eTc0Gg3mKxqjjDAM73z9cy.jpg","release_date":"2019-06-05","title":"Dark Phoenix","video":false,"vote_average":6.2,"vote_count":1302,"popularity":40.729},
                       {"adult":false,"backdrop_path":"/vVpEOvdxVBP2aV166j5Xlvb5Cdc.jpg","genre_ids":[80,53],"id":458156,"original_language":"en","original_title":"John Wick: Chapter 3 \xe2\x80\x93 Parabellum","overview":"Super-assassin John Wick returns with a $14 million price tag on his.","poster_path":"/ziEuG1essDuWuC5lpWUaw1uXY2O.jpg","release_date":"2019-05-15","title":"John Wick: Chapter 3 \xe2\x80\x93 Parabellum","video":false,"vote_average":7.1,"vote_count":1792,"popularity":73.353}
                       ],
                        "total_pages":1000,"total_results":20000}'
  • 如何序列化数据并以ajax响应的形式传递
  • 我应该直接从ajax调用中调用第三方API,还是最好从django视图中调用第三方API,因为我不必公开我的API密钥

0 个答案:

没有答案