微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在我的模板中使用 GET 方法的多个值?使用 Django

如何解决在我的模板中使用 GET 方法的多个值?使用 Django

我正在尝试使用 GET 方法和 django 分页器发送信息。 我正在使用按钮发送请求,并在我的视图上显示相应的列表,效果很好。但是,问题是当我将页面更改为 page=2 或其他任何内容时,url 被替换。 例如:您单击按钮 A,URL 应显示为 webpa.com/expedient?letter=A,当您单击下一页时,它被替换为 webpa.com/expedient?page=2 而不是 webpa.com/expedient?page =2&字母=A

我的模板如下:

<form action="expedient" method="GET">
<button type="submit" name="letter" value="A">A</button>
<button type="submit" name="letter" value="B">B</button>
<button type="submit" name="letter" value="C">C</button>
<button type="submit" name="letter" value="G">G</button>
<button type="submit" name="letter" value="L">L</button>
<button type="submit" name="letter" value="N">N</button>
</form>

并且分页器也在同一个模板中:

{% if is_paginated %}
          <nav aria-label="Paginador de portafolio">
            <ul class="pagination">
              <li class="page-item"><a class="page-link" {% if page_obj.has_prevIoUs %} href="?page={{ page_obj.prevIoUs_page_number }}"{% else %} href="#" {% endif %}>Anterior</a></li>
              {% for num in page_obj.paginator.page_range %}
              <li class="page-item"><a class="page-link" href="?page={{ num }}">{{num}}</a></li>
              {% endfor %}
              <li class="page-item"><a class="page-link" {% if page_obj.has_next %} href="?page={{ page_obj.next_page_number }}" {% else %} href="#" {% endif %}>Siguiente</a></li>
            </ul>
          </nav>
        {% endif %} 

如何发送表格中的字母值和页码

我忘了添加视图代码,我使用了一个类:

class ExpedientView(ListView):
    context_object_name = 'portfolios'
    template_name = 'dashboard-admin/portfoliorecords.html'
    paginate_by = 10
    def get_queryset(self):
        queryset = Portfolio.objects.filter(moneyBox__isnull=True).order_by('owner__last_name')
        letter = self.request.GET.get('letter',None)
        if letter:
            queryset = queryset.filter(owner__last_name__istartswith=letter)
        return queryset

我想我可能需要添加从模板收到的信件并将其添加查询集或其他变量中?并将其返回到分页代码中的模板,例如:

{% if is_paginated %}
              <nav aria-label="Paginador de portafolio">
                <ul class="pagination">
                  <li class="page-item"><a class="page-link" {% if page_obj.has_prevIoUs %} href="?page={{ page_obj.prevIoUs_page_number }}&letter={{ letter. }}"{% else %} href="#" {% endif %}>Anterior</a></li>
                  {% for num in page_obj.paginator.page_range %}
                  <li class="page-item"><a class="page-link" href="?page={{ num }}">{{num}}</a></li>
                  {% endfor %}
                  <li class="page-item"><a class="page-link" {% if page_obj.has_next %} href="?page={{ page_obj.next_page_number }}&letter={{ letter. }}" {% else %} href="#" {% endif %}>Siguiente</a></li>
                </ul>
              </nav>
            {% endif %} 

解决方法

我假设根据您的代码用户首先单击按钮 A、B、C 之一... 你在你的 views.py 中获取 request.GET 中按钮的值 然后当你想使用按钮的值时,你需要在模板的上下文中发送值

context = {
   'letter' : 'A',....
}

在你的模板中你需要像这样添加

<li class="page-item"><a class="page-link" href="?page={{ num }}&letter={{ letter }}">{{num}}</a></li>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。