1

私はdjangoとpythonが初めてで、データベースからデータを取得してページに表示するビュー機能があります。しかし、すべてのデータが 1 つのページに表示されるという問題がありますが、分離が必要です。各ページに 6 つのデータを表示する必要があり、データ数が 6 つを超える場合、ユーザーは次のページでそれらを読み取ることができます。これを行う方法がわかりません

私の見解は:

   def search1(request):
        if request.method == 'POST':
            form = SearchForm(request.POST)
            if form.is_valid():
                cd = form.cleaned_data
                books=data(cd)
                return render_to_response('result.html', {'books': books, 'form': form})
        else:
            form = SearchForm()
        return render_to_response('form.html', {'form': form})

私のテンプレート:

    {% if books %}
    <p>Found {{ books|length }} book{{ books|pluralize }}.</p>
    <ul dir=rtl>
        {% for book in books %}
        <p>title:  {{ book.title }}</p>
        <p>price:  {{ book.price }}</p>
        {% endfor %}
    </ul>
{% else %}
    <p>No books matched your search criteria.</p>
{% endif %}
4

2 に答える 2

1

django paginatorを見てみましょう

于 2012-11-07T06:52:04.957 に答える
-1

ページネーターを使用するためにコードを変更しましたが、結果ページで [次へ] をクリックすると、検索ページが再び表示されます。何が問題ですか?見る:

def search1(request):
    if request.method == 'POST':
    form = SearchForm(request.POST)
        if form.is_valid():
        cd = form.cleaned_data
        book_list=data(cd)
        paginator = Paginator(book_list, 6)
        page = request.GET.get("page", 1)
        try:
            books = paginator.page(page)
        except (PageNotAnInteger, TypeError):
            # If page is not an integer, deliver first page.
            books = paginator.page(1)
        except EmptyPage:
            # If page is out of range (e.g. 9999), deliver last page of results.
            books = paginator.page(paginator.num_pages)

        return render_to_response('list.html', {"books": books})
else:
    form = SearchForm()
    return render_to_response('form.html', {'form': form})

テンプレート :

    {% for book in books.object_list %}
    {# Each "contact" is a Contact model object. #}
    {{ book.full_name|upper }}<br />
    {{book.froshande}}
{% endfor %}

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

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

        {% if books.has_next %}
            <a href="?page={{ books.next_page_number }}">next</a>
        {% endif %}
    </span>
</div>
于 2012-11-07T08:57:11.280 に答える