【问题标题】:Django Pagination Current page in View.pyView.py 中的 Django 分页当前页面
【发布时间】:2017-04-16 17:30:15
【问题描述】:

我在 Django 中使用分页,但使用 AJAX,因此我必须将视图中的所有变量值发送到 AJAX 调用。但是对于当前页面,没有可用的内置变量?。正如我看到的官方文档。那么如何发送已经在 view.py 中计算的数据呢?

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

链接参考Following this example

【问题讨论】:

    标签: python ajax django django-pagination


    【解决方案1】:

    进行分页/ajax/django 模板标签的唯一明智方法是在 django 视图中生成整个表格 + 当前页面数据 + 表格导航等。 IE。将表格的所有变量从包含页面移动到表格的视图。

    可能更好的解决方案是为自己找到一个 javascript 表格组件并让 django 为其提供数据...

    【讨论】:

      【解决方案2】:

      您可以通过向 url 添加 GET 参数来从同一视图传递分页内容,而不是创建两个不同的视图,以检查页码并将 ajax 请求发送到同一视图。这样,管理一个视图而不是管理相同内容的两个视图会更容易。如果您的视图不仅仅是生成特定内容,因为您使用的是 ajax,那么您可以轻松拆分视图,以便一个视图仅提供相关内容。

      例如,如果您的视图的 url 是 \url-to-somepage 你可以发送ajax请求到\url-to-somepage?page=2

      然后在您的模板文件中,说template.htmlinclude 另一个模板,说__sub_template.html 用于将分页的内容。喜欢,

      <div>
          <!--
              rest of the page
          -->
          {% include 'templates\__sub_template.html' %}
      </div>
      

      那么在你看来,

      .def your_view(request):
          """
          Your code here
          """
          paginator = Paginator(contacts, number)
          page = request.GET.get('page')
          try:
              result_list = paginator.page(page)
          except PageNotAnInteger:
              result_list = paginator.page(1)
          except EmptyPage:
              result_list = []
          if page:
              return render(request, '__sub_template.html', {'contacts': result_list})
          else:
              return render(request, 'template.html', {'contacts': result_list})
      

      【讨论】:

        【解决方案3】:

        【讨论】:

        • 有没有可行的例子?我很困惑,因为我不知道它在我的情况下会如何工作。
        • 文档中的示例有效。基本上你需要两个模板。你必须包括模板,使用脚本等。一切都在那里。
        猜你喜欢
        • 2010-10-19
        • 2013-08-02
        • 2018-05-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-02
        相关资源
        最近更新 更多