2016-07-18 12 views
0

私は公式のdjangoドキュメントからページングコードを参照しました。エラーは発生しませんが、すべてのオブジェクトが同じページに表示されています。ビューに10個のオブジェクトがあり、詳細を画像)各ページに表示されるが、すべての10個のオブジェクトが1ページに表示され、2Djangoのページングが機能しない

views.py、

def add_prod(request): 
    form = ProdForm(request.POST or None,request.FILES or None) 
    my_products_list = Add_prod.objects.all() 
    paginator = Paginator(my_products_list,5) 
    page = request.GET.get('page') 
    try: 
     queryset = paginator.page(page) 
    except PageNotAnInteger: 
     # If page is not an integer, deliver first page. 
     queryset = paginator.page(1) 
    except EmptyPage: 
     # If page is out of range (e.g. 9999), deliver last page of results. 
     queryset = paginator.page(paginator.num_pages) 

    context = { 
      "form":form, 
      "products":my_products_list, 
      "obj_list":queryset 
    } 

    if form.is_valid(): 
     form.save() 
     messages.add_message(request, messages.INFO,'Product Added') 
     return redirect("add_prod") 

    return render(request,"add-prod.html",context) 

私のテンプレートファイルのごく一部、

<form id="mystyle"> 

     <table align="center"> 
      <tr class="tableHeader"> 
       <th>Books</th> 
       <th>Author</th> 
       <th>Price</th> 
       <th>Category</th> 
       <th>Image</th> 
       <th>Action</th> 
      </tr> 

      {% for i in products %} 
      <tr> 
       <td>{{i.book}}</td> 
       <td>{{i.author}}</td> 
       <td>{{i.price}}</td> 
       <td>{{i.cat}}</td> 
       <td><img src="{{i.image.url}}" alt="No Image" width=196px height=196px></td> 
       <td><button><a href="{% url 'update_prod' pk=i.pk %}">Edit</a></button> 
       <button onclick="return confirm('Are you sure want to delete?');"><a href="{% url 'del_prod' pk=i.pk %}">Delete</a></button></td> 
      </tr> 
      {% endfor %}   
     </table><br> 


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

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

       {% if obj_list.has_next %} 
        <a href="?page={{ obj_list.next_page_number }}">next</a> 
       {% endif %} 
      </span> 
     </div> 
    </form> 
されています

答えて

1

テンプレートにmy_product_listを送信しています。これはページング前のクエリセット全体です。あなたのコンテキスト辞書は、代わりに次のようになります。

context = { 
     "form":form, 
     "products":queryset, 
} 

そしてテンプレートで、その上{% products.has_next %}を使用して。

正直言って、あなたのページをpageの代わりにquerysetの代わりに呼び出すなど、別の名前が好きですが、上記はうまくいくはずです。 IMOよりよいバージョン、:

form = ProdForm(request.POST or None,request.FILES or None) 
product_list = Add_prod.objects.all() 
paginator = Paginator(my_product_list,5) 
page = request.GET.get('page') 
try: 
    product_list = paginator.page(page) 
except PageNotAnInteger: 
    # If page is not an integer, deliver first page. 
    product_list = paginator.page(1) 
except EmptyPage: 
    # If page is out of range (e.g. 9999), deliver last page of results. 
    product_list = paginator.page(paginator.num_pages) 

context = { 
     "form": form, 
     "product_list": product_list, 
} 

テンプレート:

{% for i in product_list %} 
<tr> 
<td>{{i.book}}</td> 
<td>{{i.author}}</td> 
<td>{{i.price}}</td> 
<td>{{i.cat}}</td> 
<td><img src="{{i.image.url}}" alt="No Image" width=196px height=196px></td> 
<td><button><a href="{% url 'update_prod' pk=i.pk %}">Edit</a></button> 
<button onclick="return confirm('Are you sure want to delete?');"><a href="{% url 'del_prod' pk=i.pk %}">Delete</a></button></td> 
</tr> 
{% endfor %} 
</table><br> 

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

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

      {% if product_list.has_next %} 
       <a href="?page={{ product_list.next_page_number }}">next</a> 
      {% endif %} 
     </span> 
    </div> 
+0

おかげでその作業 – Bhanukiran

関連する問題