Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery AJAX调用Django视图(restframework端点)时出现内部错误_Jquery_Python_Ajax_Django_Django Rest Framework - Fatal编程技术网

Jquery AJAX调用Django视图(restframework端点)时出现内部错误

Jquery AJAX调用Django视图(restframework端点)时出现内部错误,jquery,python,ajax,django,django-rest-framework,Jquery,Python,Ajax,Django,Django Rest Framework,jQUERY: $.ajax({ url: '/notify/', type:'GET', dataType: 'json', success: function (data) { if (data.is_taken) { alert("A user with this username already exists.");

jQUERY:

$.ajax({
            url: '/notify/',
            type:'GET',
            dataType: 'json',
            success: function (data) {
              if (data.is_taken) {
                alert("A user with this username already exists.");
              }
            }
          });
URL.py:

 url(r'^notify/$', views.notify,name='notify'),
views.py:

from django.http import HttpResponse
from django.http import Http404
from django.http import JsonResponse

def notify(request):
    data = {
        'is_taken': Notification.objects.all()
    }
    return JsonResponse(data)
在控制台中调用ajax时:

Failed to load resource: the server responded with a status of 500 (INTERNAL SERVER ERROR)
可能出了什么问题?一切都是正确的和现实的。Django 1.8,jQuery 3.1.0

编辑:Django错误日志回溯

    Internal Server Error: /notify/
Traceback (most recent call last):
  File "/Users/TheKotik/djboy/denv/lib/python3.5/site-packages/django/core/handlers/base.py", line 132, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/Users/TheKotik/djboy/blog/views.py", line 212, in notify
    return JsonResponse(data)
  File "/Users/TheKotik/djboy/denv/lib/python3.5/site-packages/django/http/response.py", line 535, in __init__
    data = json.dumps(data, cls=encoder)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/json/__init__.py", line 237, in dumps
    **kw).encode(obj)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/json/encoder.py", line 198, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/json/encoder.py", line 256, in iterencode
    return _iterencode(o, 0)
  File "/Users/TheKotik/djboy/denv/lib/python3.5/site-packages/django/core/serializers/json.py", line 112, in default
    return super(DjangoJSONEncoder, self).default(o)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/json/encoder.py", line 179, in default
    raise TypeError(repr(o) + " is not JSON serializable")
TypeError: [<Notification: Notification object>, <Notification: Notification object>, <Notification: Notification object>, <Notification: Notification object>, <Notification: Notification object>, <Notification: Notification object>, <Notification: Notification object>, <Notification: Notification object>, <Notification: Notification object>] is not JSON serializable
内部服务器错误:/notify/
回溯(最近一次呼叫最后一次):
文件“/Users/TheKotik/djboy/denv/lib/python3.5/site packages/django/core/handlers/base.py”,第132行,在get_响应中
响应=包装的回调(请求,*回调参数,**回调参数)
文件“/Users/TheKotik/djboy/blog/views.py”,第212行,在notify中
返回JsonResponse(数据)
文件“/Users/TheKotik/djboy/denv/lib/python3.5/site packages/django/http/response.py”,第535行,在__
data=json.dumps(data,cls=encoder)
文件“/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/json/_init__.py”,第237行,转储文件
**千瓦)。编码(obj)
encode中的文件“/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/json/encoder.py”,第198行
chunks=self.iterencode(o,\u one\u shot=True)
iterencode中的文件“/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/json/encoder.py”,第256行
返回_iterencode(o,0)
默认情况下,文件“/Users/TheKotik/djboy/denv/lib/python3.5/site packages/django/core/serializers/json.py”第112行
返回super(DjangoJSONEncoder,self).default(o)
默认情况下,文件“/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/json/encoder.py”第179行
raise TypeError(repr(o)+“不可JSON序列化”)
TypeError:[,,,]不可JSON序列化

您需要确保您的结果(在您的案例中,
数据
)是json可序列化的,请注意您正在执行的操作是:Notification.objects.all(),您应该执行以下操作:

from rest_framework.response import Response
from rest_framework.decorators import api_view

@api_view(['GET', ]) 
def notify(request):
    data = {
        'is_taken': NotificationSerializer(Notification.objects.all(), many=True).data
    }
    return Response(data)

并为
通知编写例如
NotificationSerializer

请包括错误的详细信息(应该在django错误日志中)@AdrianoMartins Edited您应该使用DRF响应类,而不是django JsonResponse one。对!我正在更新答案。谢谢@trinchet谢谢,很复杂,但在服务器端工作。这可能有点离题,但我该如何在JS中处理这个问题呢?当我试图解析时,它已经是一个对象了。否则,当我试图弄清楚“TypeError:undefined不是对象”时,@trinchet在前端,实际上创建了一个单独的问题,还有一个输入错误