Как добавить параметры в URL в методе рендеринга - Django? - PullRequest
0 голосов
/ 21 февраля 2019

Как добавить параметры в URL в методе рендеринга - Django?

У меня проблемы с добавлением нумерации страниц в результат поиска.

На первой странице результат отображается идеально,но начиная со второй страницы, параметр поиска больше не существует.

спасибо.

def get(self, request):

    clientes = Cliente.objects.filter(
        Q(nome__icontains=request.GET['nome']))

    formPesquisa = FormPesquisaCliente()

    paginator = Paginator(clientes, 40)
    page = request.GET.get('page')
    clientes = paginator.get_page(page)

    response = render(request, 'cliente/index.html', {
        'clientes': clientes,
        'formPesquisa': formPesquisa})

    response['Location'] += '?nome=' +request.GET['nome']
    return response

1 Ответ

0 голосов
/ 21 февраля 2019

Чего вам не хватает, так это того, что когда вы отфильтровали данные из набора запросов и разбили его на страницы, очевидно, чтобы просмотреть следующую страницу, вам нужно поддерживать состояние, передавая тот же объект фильтра nome.Таким образом, URL должен выглядеть примерно так:

http://localhost:8000/clients/?page=2&nome=something

def get(self, request):
abc = request.GET.get['nome'])     #<--- variable to get value from view
clientes = Cliente.objects.filter(
    Q(nome__icontains=abc))               #<-- pass the abc variable  here

formPesquisa = FormPesquisaCliente()

paginator = Paginator(clientes, 40)
page = request.GET.get('page')
clientes = paginator.get_page(page)

response = render(request, 'cliente/index.html', {
    'clientes': clientes,
    'formPesquisa': formPesquisa,
    'abc':abc})                                      #<-- passing the abc variable to view to maintain the state of your filter.

response['Location'] += '?nome=' +request.GET['nome']
return response

Пример кода нумерации страниц:

<div class="pagination">
  <span class="step-links">
      {% if clients.has_previous %}
          <a href="?page=1">&laquo; first</a>
          &nbsp;&nbsp;&nbsp;
          {% if nome %}
          <a href="?page={{ clientes.previous_page_number }}&nome={{ nome }}">previous</a>
            {% else %}
          <a href="?page={{ clientes.previous_page_number }}">previous</a>
            {% endif %}
      {% endif %}
      &nbsp;&nbsp;&nbsp;
      <span class="current">
          Page {{ clientes.number }} of {{ clientes.paginator.num_pages }}.
      </span>
      &nbsp;&nbsp;&nbsp;
      {% if clientes.has_next %}
            {% if nome %}
                <a href="?page={{ clientes.next_page_number }}&nome={{ nome  }}">next</a>
                &nbsp;&nbsp;&nbsp;
                <a href="?page={{ clientes.paginator.num_pages }}&nome={{ nome  }}">last &raquo;</a>
            {% else %}
                <a href="?page={{ clientes.next_page_number }}">next</a>
                &nbsp;&nbsp;&nbsp;
                <a href="?page={{ clientes.paginator.num_pages }}">last &raquo;</a>
            {% endif %}

      {% endif %}
  </span>
</div>
...