2017-04-16 113 views
0

我在Django中使用分页,但使用AJAX,所以我必须将视图中的所有变量值发送到AJAX调用。但是对于当前页面,没有可用的内置变量?正如我看到的官方文件。那么如何发送已经在view.py中计算过的数据?Django分页View.py中的当前页面

<span class="current"> 
     Page {{ contacts.number }} of {{ contacts.paginator.num_pages }}. 
    </span> 

链接引用Following this example

回答

0

唯一明智的方式做分页/ AJAX/Django的模板标签,将产生Django的视图整个表+当前页面数据+导航表等。即将表格的所有变量从包含页面移动到表格的视图。

可能是一个更好的解决办法是找到你自己一个javascript表格组件,并有Django的服务它的数据...

0

而不是创建两种不同的意见,你可以通过添加一个GET传递来自同一视图的分页内容参数添加到url,以检查页码并将ajax请求发送到同一视图。这样,对于相同的内容,管理一个视图而不是两个视图会更容易。如果您的视图不仅仅是生成特定的内容,而且您正在使用ajax,那么您可以轻松拆分视图,以便一个视图仅传送相关内容。

例如,如果您的视图的URL是\url-to-somepage 您可以发送Ajax请求\url-to-somepage?page=2

然后在你的模板文件,说template.htmlinclude另一个模板,说__sub_template.html将为其分页内容。像,

<div> 
    <!-- 
     rest of the page 
    --> 
    {% include 'templates\__sub_template.html' %} 
</div> 

那么在你看来,

.def your_view(request): 
    """ 
    Your code here 
    """ 
    paginator = Paginator(contacts, number) 
    page = request.GET.get('page') 
    try: 
     result_list = paginator.page(page) 
    except PageNotAnInteger: 
     result_list = paginator.page(1) 
    except EmptyPage: 
     result_list = [] 
    if page: 
     return render(request, '__sub_template.html', {'contacts': result_list}) 
    else: 
     return render(request, 'template.html', {'contacts': result_list})