Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django分页显示从第二页开始的所有对象_Django - Fatal编程技术网

Django分页显示从第二页开始的所有对象

Django分页显示从第二页开始的所有对象,django,Django,我以标准方式进行分页,但从页面的第二页开始,所有对象都可见。所有后续页面都包含相同的数据。 如果我从任何其他页面返回到第一页,那么我可以看到它上的所有现有对象 视图.py def viewtrainers(request, slug): trainers_list = Profile.objects.filter(city__slug = slug) page = request.GET.get('page') paginator = Paginator(trainers

我以标准方式进行分页,但从页面的第二页开始,所有对象都可见。所有后续页面都包含相同的数据。 如果我从任何其他页面返回到第一页,那么我可以看到它上的所有现有对象

视图.py

def viewtrainers(request, slug):
    trainers_list = Profile.objects.filter(city__slug = slug)
    page = request.GET.get('page')
    paginator = Paginator(trainers_list, 10)
    try:
        trainers = paginator.page(page)
    except PageNotAnInteger:
        trainers = paginator.page(1)
    except EmptyPage:
        trainers = paginator.page(paginator.num_pages)

    return render(request, "trainers.html", {'trainers':trainers})
template.html

{% if trainers.has_other_pages %}
  <ul class="pagination justify-content-center" style="margin:20px 0">
    {% if trainers.has_previous %}
      <li class="page-item"><a class="page-link" href="?page={{ trainers.previous_page_number }}">&laquo;</a></li>
    {% else %}
      <li class="page-item disabled"><span class="page-link" >&laquo;</span></li>
    {% endif %}
    {% for i in trainers.paginator.page_range %}
      {% if trainers.number == i %}
        <li class="page-item active"><span class="page-link">{{ i }} <span class="sr-only">(current)</span></span></li>
      {% else %}
        <li><a class="page-link" href="?page={{ i }}">{{ i }}</a></li>
      {% endif %}
    {% endfor %}
    {% if trainers.has_next %}
      <li class="page-item"><a class="page-link" href="?page={{ trainers.next_page_number }}">&raquo;</a></li>
    {% else %}
      <li class="page-item disabled"><span class="page-link" >&raquo;</span></li>
    {% endif %}
  </ul>
{% endif %}
{%if trainers.has_other_pages%}
    {%if.has_previous%}
  • {%else%}
  • « {%endif%} {trainers.paginator.page_range%} {%if.number==i%}
  • {{i}(当前)
  • {%else%}
  • {%endif%} {%endfor%} {%if.has_next%}
  • {%else%}
  • » {%endif%}
{%endif%}
当您按某个参数对数据进行排序时,分页会起作用。这就是分页真正有意义的时候,否则,Django不知道返回什么数据,它将围绕请求进行复制

因此,在第一行中,您需要执行以下操作:

trainers\u list=Profile.objects.filter(city\uu slug=slug)。order\u by('x')


此处
x
Profile
对象的一个属性,您可以根据该属性对数据进行实际排序。

添加排序无效排序中使用的参数是什么?它在所有配置文件对象中都是唯一的吗?我尝试使用diffirent字段include unique。Django文档没有任何关于分页排序的说明。当您订购某样东西时,那么只能保证queryset在每个页面上为您提供唯一的结果。您能告诉我您添加排序的确切字段是什么吗?slug-每个对象的唯一性和价格-不是唯一的