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

时间:2018-05-31 19:28:28

标签: python jquery ajax django

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

现在,我到目前为止:

urls.py

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


views.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>
...

Basicaly它在开始时加载5个项目,我试图实现的是,当我点击页面底部时它会再加载1个项目。 所以jQuery的工作原理是控制台.log(&#39;测试&#39;)可以工作,在我的终端中说它

  

&#34; GET / load / HTTP / 1.1&#34; 200 484

也很好。

我想我以某种方式混淆了ajax。我不确定。

你可能会说我很自然,但是我们非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

使用类似的东西:

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"})

答案 1 :(得分:1)

试一试:

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)