我希望在点击页面底部时从数据库中检索数据。
现在,我到目前为止:
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。我不确定。
你可能会说我很自然,但是我们非常感谢任何帮助。
答案 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)