Pagination Django et "page courante"
Je suis en train de développer une application Django qui en fera usage de la tristement célèbre "pagination" technique. Je suis à essayer de comprendre comment le django.de base.paginator module fonctionne.
J'ai une application avec une Question de modèle. Je serai la liste de toutes les questions en utilisant cette paginator. Il y aura 20 questions par page.
def show_question(question_pk):
questions = Question.objects.all()
paginator = Paginator(questions, 20)
page = ... # Somehow figure out which page the question is on
return render_to_response('show_question.html', { 'page' : page })
Dans la vue, où je liste les différentes pages "... 2, 3, 45, 6, ..." je tiens à souligner la page en cours en quelque sorte, comme le nombre de pages ne.
Il y a vraiment deux choses que je veux savoir:
- Comment puis-je faire de Django comprendre la question est situé à?
- Comment pourrais-je écrire mon modèle pour bien "mettre en évidence" la page actuellement visitée?
EDIT: Désolé, j'ai oublié une partie de cette question. Je tiens également à toute page, à l'exception de l'actuel être un lien vers /questions/{{ that_page.start_index }}
. Donc, fondamentalement, chaque lien de la page qui permettrait de relier à la première question sur cette page.
source d'informationauteur Deniz Dogan
Vous devez vous connecter pour publier un commentaire.
Hmm... je vois de votre commentaire que vous ne voulez pas faire de l'ol' paramètre GET, qui est ce que django.de base.paginator a été écrit pour de l'aide. Pour faire ce que vous voulez, je peux penser à une meilleure façon que de précalculer la page que chaque question est sur. Comme un exemple, votre vue sera à la fin quelque chose comme:
Pour mettre en surbrillance la page en cours dans le modèle, vous feriez quelque chose comme
Comme pour les articles, vous aurez deux différents object_lists de travailler avec...
seront les objets de la page en cours et
sera tous les objets, indépendamment de la page. Chacun de ces éléments aura une "page" de la variable qui va vous dire à quelle page ils sont sur.
Que tout est dit, ce que vous êtes en train de faire des sons non conventionnelles. Vous voudrez peut-être repenser, mais de toute façon, bonne chance.
Django, au moins à partir de la version 1.2, nous permet d'effectuer cette tâche à l'aide de pure défaut de pagination balises de modèle.
Où article_list est instance de
django-pagination devrait faire ce que vous voulez et vient emballé dans un joli paquet, vous pouvez simplement brancher et à utiliser. Essentiellement, il se déplace le code à partir de votre point de vue à la, des modèles et un middleware.
EDIT: je viens de voir ton edit.
Vous pouvez récupérer les objets sur une page à l'aide de
{% autopaginate object_list %}
, qui remplaceobject_list
avec des objets courants pour une page donnée. Vous pouvez parcourir et si vous voulez le premier, vous devriez être en mesure de la traiter comme une liste et neobject_list[0]
.Si vous voulez garder présent à l'intérieur de votre point de vue, vous pourriez faire quelque chose comme ceci:
Au sein de votre modèle, vous pouvez accéder à la page que vous êtes en train de faire:
Avec ça, vous devriez être en mesure de faire tout ce dont vous avez besoin.
Il ya un couple de bons exemples ici.