Python Django分页筛选结果CBV

Python Django分页筛选结果CBV,python,django,pagination,Python,Django,Pagination,如何在Django CBV中使用多个过滤器分页?我的视图和表单中有一些过滤器,我不知道如何分页。我尝试过的一切都失败了。 这是我的密码 models.py views.py form.html 蒂波多文档 {tl%中l的%1} {%if l.tipo_lei==“complementar”%}Leis complementares {%elif l.tipo_lei==“ordinaria”} {%elif l.tipo_lei==“decreto”%}decreto {%elif l.tip

如何在Django CBV中使用多个过滤器分页?我的视图和表单中有一些过滤器,我不知道如何分页。我尝试过的一切都失败了。 这是我的密码

models.py views.py form.html

蒂波多文档
{tl%中l的%1}
{%if l.tipo_lei==“complementar”%}Leis complementares
{%elif l.tipo_lei==“ordinaria”}
{%elif l.tipo_lei==“decreto”%}decreto
{%elif l.tipo_lei==“Convencio”}市政府
{%elif l.tipo_lei==“portaria”}Portarias
{%endif%}
{%endfor%}
阿诺
{%中的l2为%}
{{l2.ano}}
{%endfor%}
佩斯奎萨尔

您需要的是一份工作 佩斯奎萨尔

result.html

{%if busca_leis%}
{对于busca_leis%中的lb为%1}

{{lb.titulo|safe}


{%endfor%}
{%else%}

O termo pesquisado nãO foi encontrado。利用过滤器实现一项pesquisar更新。 {%endif%} {%if已分页%}
    {%如果页面_obj.has_previous%}
  • {%else%}
  • « {%endif%} {paginator.page_range%} {%如果页码=i%}
  • {{i}(当前)
  • {%else%}
  • {%endif%} {%endfor%} {%如果页面_obj.has_next%}
  • {%else%}
  • » {%endif%}
{%endif%}

当您单击分页时,现有的查询字符串将被删除,因此您需要有一种方法来传递该信息

最好的选择是将这些信息传递出去

首先将“django.core.context_processors.request”添加到settings.py

## settings.py
TEMPLATE_CONTEXT_PROCESSORS = (
'django.core.context_processors.request',
)
现在,您可以访问

在模板中,更改行:

<a href="?page={{ page_obj.next_page_number }}">


我试过了,但没用。过滤我的第一页url是这样的:但是修改代码:谢谢你的帮助,我真的很感激,它可以工作,但是当我到达第2页时出现了一个问题这里没问题url:当我到达下一页时,我遇到了一个问题url显示:根据你写的,你删除了“”环绕键!='第页'。for循环中的那一行正在检查querydict中的页面,而不是显示它。嘿!!!成功了。非常感谢。我相信它会帮助更多有同样问题的人。很高兴听到!如果你能接受我的回答,那就太好了。
<form method="get" action="{% url 'leis:busca_lei_view' %}">
<div class="form-group">
    <select name="t" class="form-control">
        <option value="">Tipo do documento</option>
        {% for l in tl %}
            <option value="{{ l.tipo_lei }}">
                {% if l.tipo_lei   ==   "complementar" %} Leis complementares
                {% elif l.tipo_lei ==   "ordinaria" %}    Leis ordinárias
                {% elif l.tipo_lei ==   "decreto" %}      Decretos
                {% elif l.tipo_lei ==   "convenio" %}     Convênios municipais
                {% elif l.tipo_lei ==   "portaria" %}     Portarias
                {% endif %}
            </option>
        {% endfor %}
    </select>
</div>
<div class="form-group">
    <input name="n" type="text"  class="form-control"  placeholder="numero da lei, portaria ou decreto" size="10" maxlength="30">
</div>
<div class="form-group">
    <select name="a" class="form-control">
        <option value="">ano</option>
        {% for l2 in an %}
            <option value="{{ l2.ano }}">{{ l2.ano }}</option>
        {% endfor %}
    </select>
</div>
<div class="form-group">
    <button value="{{ search_term }}" class="btn btn-info">pesquisar</button>
</div>
<hr />
<div class="form-group">
    <label for="t"><strong>Ou digite um termo a ser pesquisado</strong></label>
    <input name="p" class="form-control" type="text"  placeholder="digite um termo a ser pesquisado" size="20" maxlength="30">
</div>
<button value="{{ search_term }}" class="btn btn-info">Pesquisar</button>
<div class="row">
<div class="col-xs-12">
    {% if busca_leis %}
        {% for lb in busca_leis %}
            <h4 ><a href="{{ lb.arquivo.url }}" class="text-primary">
                {% if lb.tipo_lei == "complementar" %}Lei complementar n° {% elif lb.tipo_lei == "ordinaria" %} Lei ordinária nº {% elif lb.tipo_lei == "decreto" %} Decreto nº {% elif lb.tipo_lei == "convenio" %} Convênio municipal {% else %} Portaria nº{% endif %} {{ lb.numero }} de {{ lb.ano }}</a>
            </h4>
            <p class="post-content">{{ lb.titulo|safe }}</p>
            <br />
        {% endfor %}
        <br />

    {% else %}
        <br /><br />
        <div class="alert alert-warning" role="alert">
            <h5>
                O termo pesquisado não foi encontrado. Utilize os filtros para realizar a pesquisar novamente.
            </h5>
            <a href="{% url 'leis:leis_view' %}" class="btn btn-warning">voltar</a>
        </div>
    {% endif %}

</div>
{% if is_paginated %}
    <ul class="pagination">
        {% if page_obj.has_previous %}
            <li><a href="?page={{ page_obj.previous_page_number }}">&laquo;</a></li>
        {% else %}
            <li class="disabled"><span>&laquo;</span></li>
        {% endif %}
        {% for i in paginator.page_range %}
            {% if page_obj.number == i %}
                <li class="active"><span>{{ i }} <span class="sr-only">(current)</span></span></li>
            {% else %}
                <li><a href="?page={{ i }}">{{ i }}</a></li>
            {% endif %}
        {% endfor %}
        {% if page_obj.has_next %}
            <li><a href="?page={{ page_obj.next_page_number }}">&raquo;</a></li>
        {% else %}
            <li class="disabled"><span>&raquo;</span></li>
        {% endif %}
    </ul>
{% endif %}
## settings.py
TEMPLATE_CONTEXT_PROCESSORS = (
'django.core.context_processors.request',
)
<a href="?page={{ page_obj.next_page_number }}">
<a href="?page={{ page_obj.next_page_number }}{% for key, value in request.GET.items %}{% if key != page %}&{{key}}={{value}}{% endif %}{% endfor %}"