Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.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
Javascript 对django视图的Ajax请求未返回响应_Javascript_Jquery_Python_Ajax_Django - Fatal编程技术网

Javascript 对django视图的Ajax请求未返回响应

Javascript 对django视图的Ajax请求未返回响应,javascript,jquery,python,ajax,django,Javascript,Jquery,Python,Ajax,Django,我正在制作一个网站,我想加载用户提交的元素评论,我想能够动态显示它们,而不是让网页必须一次加载它们。所以我设置了这个ajax请求函数: function loadcomments(){ $.ajax({ url: '/ajax/getcomments/', data: { 'identifier': {{ identifier }} 'begin': 0, 'end': 30

我正在制作一个网站,我想加载用户提交的元素评论,我想能够动态显示它们,而不是让网页必须一次加载它们。所以我设置了这个ajax请求函数:

function loadcomments(){
   $.ajax({
        url: '/ajax/getcomments/',
        data: {
            'identifier': {{ identifier }}
            'begin': 0,
            'end': 30
        },
        dataType: 'json',
        success: function (data) {
            alert(data.comments);
        }
   });
};
以及回应该请求的一个观点:

def obtain_comments(request, *args, **kwargs):
    begin = kwargs.get('begin');
    end = kwargs.get('end');
    comments = end - begin
    all_before = Comment.objects.order_by('-uploaded')[:end]
    data = {
        'comments': all_before.order_by('uploaded')[:comments]
    }
    return JsonResponse(data)
但我没有得到回应。我在浏览器控制台中没有看到任何错误,但是在django runserver终端中我看到:

Internal Server Error: /ajax/getcomments/
Traceback (most recent call last):
  File "/home/trie/Desktop/django/venv/lib/python3.5/site-packages/django/core/handlers/exception.py", line 35, in inner
    response = get_response(request)
  File "/home/trie/Desktop/django/venv/lib/python3.5/site-packages/django/core/handlers/base.py", line 128, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/home/trie/Desktop/django/venv/lib/python3.5/site-packages/django/core/handlers/base.py", line 126, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/trie/Desktop/django/vidmiotest/player/views.py", line 64, in obtain_comments
    comments = end - begin
TypeError: unsupported operand type(s) for -: 'NoneType' and 'NoneType'
或者,如果我将“开始”和“结束”设置为固定值而不是kwargs:

Internal Server Error: /ajax/getcomments/
Traceback (most recent call last):
  File "/home/trie/Desktop/django/venv/lib/python3.5/site-packages/django/core/handlers/exception.py", line 35, in inner
    response = get_response(request)
  File "/home/trie/Desktop/django/venv/lib/python3.5/site-packages/django/core/handlers/base.py", line 128, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/home/trie/Desktop/django/venv/lib/python3.5/site-packages/django/core/handlers/base.py", line 126, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/trie/Desktop/django/vidmiotest/player/views.py", line 67, in obtain_comments
    'comments': all_before.order_by('uploaded')[:comments]
  File "/home/trie/Desktop/django/venv/lib/python3.5/site-packages/django/db/models/query.py", line 1012, in order_by
    "Cannot reorder a query once a slice has been taken."
AssertionError: Cannot reorder a query once a slice has been taken.
我尝试从“获取注释”视图中删除元素标识符,以便获取数据库中的任何注释。但是,我希望视图能够响应我手动插入到数据库中的1条注释

url.py中,我定义了如下url:

path('ajax/getcomments/', obtain_comments),

为什么我没有得到响应?

args
kwargs
视图中的参数用于在URL中传递并在URL模式中捕获的参数。你没有这些;您的Ajax正在GET查询字符串中发送值。因此,您需要从
请求中获取它们。获取
。还要注意,这些值将是字符串,因此需要将它们转换为整数

begin = int(request.GET['begin'])
end = int(request.GET['end'])

另一个错误在错误消息本身中解释;切片后不能点菜。您应该提前执行此操作。

视图中的args
kwargs
用于在URL中传递并在URL模式中捕获的参数。你没有这些;您的Ajax正在GET查询字符串中发送值。因此,您需要从
请求中获取它们。获取
。还要注意,这些值将是字符串,因此需要将它们转换为整数

begin = int(request.GET['begin'])
end = int(request.GET['end'])

另一个错误在错误消息本身中解释;切片后不能点菜。你应该提前做。

那么你知道为什么你会得到
end
和/或
begin
NoneType
吗?不,这是问题的一部分。。。我知道请求到达了视图,但我不理解当时发生的错误。那么,您知道为什么在
end
和/或
begin
中得到
NoneType
吗?不,这是问题的一部分。。。我知道请求到达视图,但我不理解当时发生的错误