gpt4 book ai didi

django - 将 django-endless-pagination 与扩展 ListView 的基于 c 的自定义 View 一起使用

转载 作者:行者123 更新时间:2023-12-04 18:22:41 24 4
gpt4 key购买 nike

阅读 django-endless-pagination的文档说你可以扩展它的 Ajax只需使用 @page_template() 装饰器即可对基于类的 View 进行分页功能...
我一直在尝试使用以下方法实现该装饰器一个小时:

class ExtendedListView(ListView):
template_name = 'global_template.html'

@method_decorator(@page_template('path_to_updatable_content_only_template'))
def dispatch(self, *args, **kwargs):
return super(ExtendedListView, self).dispatch(*args, **kwargs)

View 函数不会输出任何错误,但是当我转到另一个页面时,它会在目标中加载“global_template”,而不是在装饰器中定义的模板。

如果有人知道这个实现是否真的有效并且我犯了一些错误,请指出,我会很高兴以正确的方式使用它。

我设法想出了一个解决方法,所以如果有人遇到同样的问题并且对此没有合规的答案,您可以这样做:
class ExtendedListView(ListView):
template_name='global_template_path'

'''
render_to_response ¿hack? so that i can render only the updatable DOM part template
'''
def render_to_response(self, context):
if self.request.is_ajax():
self.template_name = 'path_to_updatable_content_only_template'
return super(ExtendedListView, self).render_to_response(context)
else:
return super(ExtendedListView, self).render_to_response(context)

干杯!

最佳答案

正式地,您可以使用 AjaxListView 来执行此任务:

# views.py
from endless_pagination.views import AjaxListView
class BookView(AjaxListView):
context_object_name = "books"
model = Book

template_name = 'books.html'
page_template = 'books_list.html'

在 book.html 中:
{% extends 'base.html' %}


{% block js %}
{{ block.super }}
<script src="/static/js/jquery.js" type="text/javascript" charset="utf-8"></script>
<script src="/static/js/endless.js" type="text/javascript" charset="utf-8"></script>
{% endblock %}

{% block content %}

<div class="endless_page_template">

{% include page_template %}
</div>

{% endblock %}

这是books_list.html
{% load endless %}

{% paginate books %}

{% for book in books %}
{{ book.title }}
{% endfor %}

<div class="pagination">

{% show_pages %}
</div>

关于django - 将 django-endless-pagination 与扩展 ListView 的基于 c 的自定义 View 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10326543/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com