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

Как добавить параметры в 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

При нажатии на вторую страницу вам нужно снова передать объект nome в URL-адресе.

ans2human 21.02.2019 06:13

Можете показать html файл?

Sanip 21.02.2019 06:14
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
396
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чего вам не хватает, так это того, что когда вы отфильтровали данные из набора запросов и разбили их на страницы, очевидно, для просмотра следующей страницы вам нужно сохранить состояние, передав тот же объект фильтра 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>

Большое Вам спасибо

marcelo.delta 21.02.2019 12:37

Другие вопросы по теме