2016-03-31 10 views
1

私はPython開発の初心者です。私はDjangoで私のページを改ページしたい。私はユーザーがドロップダウンリストを作成して、表示する表示項目を選択します。例:ドロップダウンリストで「10」を選択して「送信」ボタンをクリックすると、10個のアイテムが表示されますが、「次へ」または「前の」ボタンをクリックすると、デフォルトで25個のアイテムが表示されます。ドロップダウンリストに表示されます。今、「次へ」または「前へ」をクリックすると、ドロップダウンリストで選択したように10個のアイテムが表示されます。どうやってやるの。これは私のコードPythonとDjangoのページ設定

view.pyです:

def listing(request): 
    people = Person.objects.all() 
    if "dropdown" in request.POST: 
     per_page = request.POST["dropdown"] 
    else: per_page = 25 
    paginator = Paginator(people, per_page) 
    page = request.GET.get('page') 
    try: 
     people = paginator.page(page) 
    except PageNotAnInteger: 
     people = paginator.page(1) 
    except EmptyPage: 
     people = paginator.page(paginator.num_pages) 
    return render_to_response('crud\index.html', RequestContext(request, {'people': people, 'per_page': per_page})) 

し、POSTパラメータを持っていないので、これはコードファイルのindex.html

{% if people %} 
<form method="post"> 
    {% csrf_token %} 
    <table> 
     <p> 
      <select name="dropdown"> 
       <option value="5">5</option> 
       <option value="10">10</option> 
       <option value="15">15</option> 
       <option value="20">20</option> 
      </select> 
     </p> 
     <input type="submit" value="Submit"/> 
     <tr> 
      <th>Name</th> 
      <th>Phone</th> 
      <th>Age</th> 
     </tr> 
     {% for person in people %} 
      <tr> 
       <td>{{ person.name }}</td> 
       <td>{{ person.phone }}</td> 
       <td>{{ person.age }}</td> 
       <td><a href="delete/{{ person.id }}">Delete</a></td> 
       <td><a href="edit/{{ person.id }}">Edit</a></td> 
      </tr> 
     {% endfor %} 
     <div class="pagination"> 
     <span class="step-links"> 
      {% if people.has_previous %} 
       <a href="?page={{ people.previous_page_number }}">previous</a> 
      {% endif %} 

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

      {% if people.has_next %} 
       <a href="?page={{ people.next_page_number }}">next</a> 
      {% endif %} 
     </span> 
     </div> 
    </table> 
</form> 
{% else %} 
    <p>No people in the database</p> 
{% endif %} 
{% if per_page %} 
    <p>You picked {{ per_page }}.</p> 
{% endif %} 

答えて

0

25ページのリセットをありますクライアントがナビゲーションをトリガーするとので、すべてのページは次のようになり

それを行うための方法は、ページごとの結果の数を別のGETパラメータを追加することです?page=x&pagination=10

getメソッドに変換し、変更することにより、これに直接リンクすることができあなたのフォームgetパラメータの名前への入力の名前。あなたは結果としてあなたのナビゲーションリンクを適応させる必要があります。

関連する問題