在django-endless-pagination中自定义show_more标签?

时间:2018-01-19 05:56:43

标签: python django pagination django-endless-pagination

我在项目中使用Django EL(Endless) Pagination库滚动分页。

默认情况下show_more标记显示loading字词。我想要自定义它。我使用下一个代码,但它工作不正确。它向我展示了9个图标,最后不会消失。我有点困惑。如何解决?

settings.py:

EL_PAGINATION_LOADING = """<i class='fa fa-cog fa-spin fa-3x fa-fw text-info text-justify endless_loading'>"""

当前解决方案:

我找到了可行的解决方案,但我不确定这是最好和最明确的方法。

custom_tags.py:

from django import template
from django.utils.encoding import iri_to_uri
from el_pagination import (settings, utils)

register = template.Library()

@register.inclusion_tag('documents/show_more_info.html', takes_context=True)
def show_more_info(context, label=None, loading=settings.LOADING, class_name=None):
    data = utils.get_data_from_context(context)
    page = data['page']
    if page.has_next():
        request = context['request']
        page_number = page.next_page_number()
        querystring_key = data['querystring_key']
        querystring = utils.get_querystring_for_page(
            request, page_number, querystring_key,
            default_number=data['default_number'])
        return {
            'label': label,
            'loading': loading,
            'class_name': class_name,
            'path': iri_to_uri(data['override_path'] or request.path),
            'querystring': querystring,
            'querystring_key': querystring_key,
            'request': request,
        }
    return {}

文件/ show_more_info.html:

{% load i18n %}
{% if querystring %}
    <div class="endless_container">
        <a class="endless_more{% if class_name %} {{ class_name }}{% endif %}" href="{{ path }}{{ querystring }}" data-el-querystring-key="{{ querystring_key }}">
            {% if label %}{{ label|safe }}{% else %}{% trans "more" %}{% endif %}
        </a>
        <div class="endless_loading" style="display: none;">
            <div class="alert alert-info infinite-loading text-center">
                <i class="fa fa-cog fa-spin fa-3x fa-fw" aria-hidden="true"></i>
            </div>
        </div>
    </div>
{% endif %}

最后,我可以使用show_more_info代码而不是默认show_me代码。

0 个答案:

没有答案