【问题标题】:django-pagination to paginate django-filter resultsdjango-pagination 对 django-filter 结果进行分页
【发布时间】:2015-09-01 12:22:54
【问题描述】:

我正在尝试对 django-filter 的结果进行分页。

  • Django 1.8.3
  • django-filter 0.11.0
  • django 分页 1.0.7

我已按照相关文档中的建议配置视图/模板,我的观点

class ItemFilter(django_filters.FilterSet):
    class Meta:
        template_name = 'library/items.html'
        model = Item
        fields = ['type','publishing','author','tags']
        order_by = ['id']

def itemimages(request):
    f = ItemFilter(request.GET, queryset=Item.objects.all())
    return render_to_response('library/images.html', {'filter': f})

我的模板

{% extends 'library/base.html' %}
{% load pagination_tags %}

{% block title %}Library Index{% endblock %}

{% block body_block %}
    {% load staticfiles %}
    <ul class="rig columns-3">
        {% autopaginate filter 2 as filter_list %}
        {% for obj in filter_list %}
            <li>
                <a href="/library/{{ obj.id }}/">
                    <img src="{% static "/" %}{{ obj.cover.url }}"/>

                    <p>{{ obj.title }}<br/>{{ obj.national_title }}</p>
                </a>
            </li>
        {% endfor %}
        {% paginate %}
    </ul>
{% endblock %}

{% block sidebar_block %}
    <form action="" method="get">
        {{ filter.form.as_p }}
        <input type="submit"/>
    </form>
{% endblock %}

但我只能看到错误消息(它可以在没有自动分页块的情况下工作)

KeyError at /library/

'request'

Request Method:     GET
Request URL:    http://localhost:8000/library/
Django Version:     1.8.3
Exception Type:     KeyError
Exception Value:    

'request'

Exception Location:     /usr/lib64/python2.7/site-packages/django/template/context.py in __getitem__, line 71
Python Executable:  /usr/bin/python2.7
Python Version:     2.7.5

请帮助我找出我错在哪里。 django-filter 上的文档表明该列表可以通过f.qs 获得,但它对我没有用。

【问题讨论】:

    标签: django django-filter django-pagination


    【解决方案1】:

    尝试使用render 快捷方式而不是render_to_response 呈现您的视图,以便request 对象在模板上下文中可用。

    from django.shortcuts import render
    
    def itemimages(request):
        f = ItemFilter(request.GET, queryset=Item.objects.all())
        return render(request, 'library/images.html', {'filter': f})
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-11
      • 2013-05-04
      • 2018-01-31
      • 2012-05-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多