python - django 中的分页 - 原始查询字符串丢失

标签 python django

我使用文档中的代码对数据进行分页:

try:
    data = paginator.page(request.GET.get('page'))
except PageNotAnInteger:
    page = 1
    data = paginator.page(1)
except EmptyPage:
    data = paginator.page(paginator.num_pages)

还有一个页面:

<div class="pagination">
      <span class="step-links">
          {% if data.has_previous %}
              <a href="?page={{ data.previous_page_number }}">previous</a>
          {% endif %}

          <span class="current">
              <b>Page</b> {{ data.number }} of {{ data.paginator.num_pages }}
          </span>

          {% if data.has_next %}
              <a href="?page={{ data.next_page_number }}">next</a>
          {% endif %}

      </span>
    </div>

但是这里有一个错误:当 url 包含一个查询字符串并且单击寻呼机时,原始查询字符串会丢失。例如:

example.com?var1=33&var2=44

然后当点击“page2”时,url 变为

example.com?page=2  # var1=33&var2=44 is lost

代替:

example.com?var1=33&var2=44&page=2 

我既没有找到修复它的标准,也没有找到简单的方法。我该怎么做?

更新:

当然,参数的名称、值以及它们是否存在都是未知的。

最佳答案

如果您在设置中激活 django.core.context_processors.request,您可以直接在模板中访问请求中的参数。参见 https://docs.djangoproject.com/en/1.7/ref/templates/api/#django-core-context-processors-request

然后您可以直接访问模板中的参数。在您的情况下,您需要过滤 page 参数。你可以这样做:

href="?page={{ data.next_page_number }}{% for key, value in request.GET.items %}{% if key != 'page' %}&{{ key }}={{ value }}{% endif %}{% endfor %}"

关于python - django 中的分页 - 原始查询字符串丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30550240/

相关文章:

python - 文件上传问题 - Python-WIndows-CheryyPy

python - 如何在 MultiIndex pandas DataFrame 中设置索引值?

使用单个函数进行 Python 多处理

django - 如何正确配置 djcelery 结果后端到数据库

python - 向 pandas 列添加前缀

Python 网络抓取线程性能

python - Django URL反向: When URL reversig a username it fails when username has a '.' literal in it

python - SECRET_KEY 设置不能为空

python - 使用 Django 时查找查询源的推荐方法?

django - Chartkick 的 ChartJS 选项