2017-02-10 33 views
0

ページ単位でクエリ結果を表示するために、Django projectのページ番号を改善しています。 @neverwalkalonerが私を助けてくれてありがとう:Create several pages from arrayDjangoページネーションですべてのページが表示されない

しかし、私は不溶性のエラーが出ます。私は最初のページを表示することができ、それはかなりうまくいくが、次のページを選択すると、次の結果とともに表示されない。あなたが見ることができるように

最初のページ

enter image description here

2ページ目

enter image description here

これが私の見解です。

@login_required 
def Table_annuelle_BirthCertificate(request) : 

    query_naissance = request.GET.get('q1') 
    request.session['query_naissance'] = query_naissance 

    if query_naissance : 
     query_naissance_list = BirthCertificate.objects.filter(created__icontains=query_naissance).order_by('lastname') 
    else : 
     query_naissance_list = BirthCertificate.objects.none() # == [] 

    paginator = Paginator(query_naissance_list, 3) 
    page = request.GET.get('page', 1) 

    try: 
     query_naissance_list = paginator.page(page) 
    except PageNotAnInteger: 
     query_naissance_list = paginator.page(1) 
    except EmptyPage: 
     query_naissance_list = paginator.page(paginator.num_pages) 

    context = { 
     "BirthCertificate":BirthCertificate, 
     "query_naissance" : query_naissance, 
     "query_naissance_list" : query_naissance_list, 
     "PageNotAnInteger":PageNotAnInteger, 
     } 

    return render(request, 'annuel.html', context) 

そして、私のテンプレート:

<h4 class = "col-sm-10"> <b><font color="#0083A2"> <span class="glyphicon glyphicon-user"></span> Prévisualisation de la table annuelle des naissances </b></font></h4> 

<form class = "col-sm-10" method="GET" action=""> 
    <input type="text" name="q1" placeholder="Entrer une année" value="{{ request.GET.q1 }}"> &nbsp; 
    <input class="button" type="submit" value="Rechercher"> 
</form> 

<br></br> 
<br></br> 

<table style="width:50%"> 
    <tbody> 
     <tr> 
      <th>Nom & prénom(s)</th> 
      <th>Lieux de Naissance</th> 
      <th>Date des actes</th> 
      <th>Numéro de l'acte</th> 
     </tr> 
     {% for item in query_naissance_list %} 
     <tr> 
      <td> {{item.lastname}} {{item.firstname}} </td> 
      <td> {{item.birthcity}} ({{item.birthcountry.name}}) </td> 
      <td> {{item.created}} <p></p> {{item.birthday}} (Naissance) </td> 
      <td> {{item.id}} </td> 
     </tr> 
     {% endfor %} 
    </tbody> 
</table> 

{% if query_naissance_list.has_previous %} 
<a href="?page={{ query_naissance_list.previous_page_number }}">Page précédente</a> 
{% endif %} 

<span class="current"> 
    Page {{ query_naissance_list.number }} sur {{ query_naissance_list.paginator.num_pages }}. 
</span> 

{% if query_naissance_list.has_next %} 
    <a href="?page={{ query_naissance_list.next_page_number }}">Page suivante</a> 
{% endif %} 

は、あなたのアイデアをお持ちですか?私は多くのチュートリアルをチェックしていて、どこを忘れたのか分かりません。

+0

'try'ブロック内の' query_naissance_list = paginator.page(page) 'があなたに見えない例外を投げている可能性があります。 –

+0

@Sayseの例を使用しました。私は 'q1'変数を毎回各ページに指定しなければなりませんでした。私はそれがすべてのページでグローバルであると思っていたし、ついには – Deadpool

答えて

2

はあなたのクエリセットを指定するたびにGETパラメータを失い、私はあなたのいずれかがアンカーのためのgetのparamでこれを含める必要がありますが、そうでこのq1を取得する場所完全にはよく分からない

query_naissance = request.GET.get('q1') 

<a href="?page={{ query_naissance_list.next_page_number }}&q1={{ request.GET.q1 }}"> 

<a href="?page={{ query_naissance_list.previous_page_number }}&q1={{ request.GET.q1 }}"> 

かに別の方法を見つけますこれを取得するq1

+0

ユーザーは配列のすぐ上のフィールドに年を書きます。その値に対応する「q1」を変数とする。したがって、配列は 'date'を' q1'の値として含むすべてのオブジェクトにクエリ結果を表示し、ページ単位で結果をページごとに表示することができます。 – Deadpool

+1

あなたの編集でうまくいきます!ありがとうございました:)各ページに 'q1'変数を指定しなければなりませんでした。私はそれが私のスクリプトの中で自動であると思った。 – Deadpool

関連する問題