当前位置: 首页 > 知识库问答 >
问题:

如何在django中通过AJAX请求传递数据?

鱼征
2023-03-14

我想在点击页面底部时从数据库中检索数据。

现在,我所了解的是:

URL。py

urlpatterns = [
   url(r'^$', feedViews.index, name='index'),
   url(r'^load/$', feedViews.load, name='load'),
]


视图。py公司

def index(request):
    if request.method == 'GET':
        context = {
                'entry_list': Entry.objects.filter()[:5],
            }
        return render(request,'index.html',context)
    else:
        return HttpResponse("Request method is not a GET")

def load(request):
    if request.method == 'GET':
        context = {
                'entry_list': Entry.objects.filter()[:1],
            }
        return render(request,'index.html',context)
    else:
        return HttpResponse("Request method is not a GET")


index.html

...
    <script>
$(window).on("scroll", function() {
       if ((window.innerHeight + window.scrollY) >= document.body.offsetHeight) {
         console.log( "TEST" );

        $.ajax(
        {
            type:"GET",
            url: "/load",
            data:{

            },


         })
       }
   });
</script>
...

基本上,它在开始时加载5项,而我试图实现的是,当我到达页面底部时,它会再加载1项。因此jQuery在控制台上工作。日志(“测试”)工作,在我的终端上显示

“获取/加载/HTTP/1.1”200 484

这也很好。

我想我搞砸了ajax不知何故。虽然我不确定。

你可能知道我是个笨蛋,但我非常感谢你的帮助。

共有2个答案

云浩然
2023-03-14

试试看:

import json
from django.core import serializers
from django.http import JsonResponse

def index(request):
    if request.method == 'GET' and request.is_ajax():
        # Return objects
        entry = Entry.objects.filter()[:5]
        # serializers
        entry2 = serializers.serialize('json', entry)
        # convert JSON
        entry3 = [d['fields'] for d in json.loads(entry2)]
        data = dict()
        data["entry"] = entry3
    return JsonResponse(data)
赏弘
2023-03-14

使用类似以下内容:

import json
from django.http import JsonResponse


def index(request):
    if request.method == 'GET':
        context = {
                'entry_list': Entry.objects.filter()[:5],
            }
        return JsonResponse(json.dumps(context), safe=False)
    else:
        return JsonResponse({"err_msg": "Failed"})
 类似资料:
  • 当我点击按钮时: -迭代所有tr并将其所有输入的名称收集到数组(这已经完成了) - 我还从输入和触发名称的两个文本中获取数据 - 通过ajax将所有(一个数组和两个文本)发送到asp.net.cs(不起作用)

  • 问题内容: 如何通过python模块Requests传递csrftoken?这就是我所拥有的,但是它不起作用,并且我不确定将其传递给哪个参数(数据,标头,身份验证…) 每次都有相同的错误消息。 问题答案: 如果要设置引荐来源标头,则对于该特定站点,您需要将引引来源设置为与登录页面相同的URL: 当使用不安全时,标头通常会被过滤掉,否则无论如何很容易被欺骗,因此大多数站点不再需要设置标头。但是,在使

  • 问题内容: 我想将数组作为Ajax请求发送: 我怎样才能做到这一点? 问题答案: info = []; info[0] = ‘hi’; info[1] = ‘hello’;

  • 问题内容: 以下是我的Ajax 请求: 除了之外,还有其他传递数据的方法吗? 问题答案: 阅读此错误问题:http : //bugs.jquery.com/ticket/11586 引用 RFC 2616字段 该方法请求原始服务器删除 由Request-URI标识 的资源。 因此,您需要在URI中传递数据

  • 问题内容: 我已经按照npm软件包文档中的建议编写了axios POST请求,例如: 它可以工作,但是现在我修改了后端API以接受标头。 内容类型:“ application / json” 授权:“ JWT fefege …” 现在,此请求在Postman上可以正常工作,但是在编写axios调用时,我遵循 此链接 ,无法完全正常工作。 我经常出错。 这是我的修改请求: 任何帮助是极大的赞赏。 问

  • 如果要在多个Servlet或JSP中传递复杂的对象,使用请求属性是最简单的方法。HttpServletRequest接口定义了setAttribute、getAttribute和removeAttribute方法分别用于保存、获得和删除请求域中的对象。并且还可以通过getAttributeNames方法获得所有保存在请求域中的属性名。在下面的例了将演示在两个Servlet之间传递一个MyClass