jQuery   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了jquery – 在Django中序列化分页对象的任何方法?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用Django jQuery与jQuery.我可以序列化分页对象的对象列表,但我想序列化整个对象以获取更多数据(页码,总页数……).
如何序列化整个分页对象?

谢谢

JavaScript

function getRestaurants(query) {

        $.post("/getRestaurant/",query,function(data) {
                /* do stuff with data */
             },"json" );
}

views.py

def getRestaurant(request):

    results = Restaurant.objects.all()
    paginator = Paginator(restaurants,5)

    # Make sure page request is an int. If not,deliver first page.
    try:
        page = int(request.POST.get('page','1'))
    except ValueError:
        page = 1

    # If page request (9999) is out of range,deliver last page of results.
    try:
        results = paginator.page(pagE)
    except (EmptyPage,InvalidPagE):
        results = paginator.page(paginator.num_pages)

    data=serializers.serialize("json",results.object_list) #I'd like to serialize the whole results object

    return httpResponse(data)

解决方法

我只需要为此制作一个hacky解决方案,所以我会将其作为答案发布 – 欢迎任何改进:
from django.core import serializers
from django.core.paginator import Paginator,InvalidPage,EmptyPage
from django.core.serializers.json import DjangoJSONEncoder
from django.http import httpResponse
from django.utils import simplejson  
from types import MethodType 

from mysite.tasks.models import Task

PER_PAGE = 20

def list(request):
    """
    Return a paginated JSON object.
    """

    paginator = Paginator(tasks.objects.all(),PER_PAGE) 
    try:
        page = int(request.GET.get('page',deliver last page of results.
    try:
        pagetasks = paginator.page(pagE)
    except (EmptyPage,InvalidPagE):
        pagetasks = paginator.page(paginator.num_pages)

    # Dump the Page attributes we want to a Dictionary
    serializedpage = {}
    wanted = ("end_index","has_next","has_other_pages","has_prevIoUs","next_page_number","number","start_index","prevIoUs_page_number")
    for attr in wanted:
        v = getattr(tasks,attr)
        if isinstance(v,MethodTypE):
            serializedpage[attr] = v()
        elif isinstance(v,(str,int)):
            serializedpage[attr] = v

    # serialise the queryset to plain Python objects 
    # and add them to the serialized page Dictionary
    pythonserializer = serializers.get_serializer("python")()
    serializedpage["object_list"] = pythonserializer.serialize(pagetasks.object_list,fields=('task_id','task_data')) 

    # Dump it as JSON using the Django encoder
    response = httpResponse(mimetype="application/json")
    simplejson.dump(serializedpage,response,cls=DjangoJSONEncoder)
    return response

大佬总结

以上是大佬教程为你收集整理的jquery – 在Django中序列化分页对象的任何方法?全部内容,希望文章能够帮你解决jquery – 在Django中序列化分页对象的任何方法?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。