2009-11-17 2 views
3

Je suis un débutant Django et je suis incapable de réaliser quelque chose de trivial. S'il vous plait, j'ai besoin de votre aide avec ceci.Comment puis-je obtenir une variable passée dans un modèle inclus dans django

  1. Je suis en train une pgurl variable dans mon views.py
  2. Am en mesure d'accéder à la variable {{}} pgurl dans mon modèle de with_tag.html. Ce modèle comprend un modèle de pagination.html en lui-même
  3. En pagination.html Je ne peux pas utiliser la variable {{}} pgurl et rien est imprimé

Comment puis-je obtenir cette variable passée dans le modèle inclus ?

views.py

def with_tag(request, tag, template_name='main/with_tag.html', current_page=1, pgurl=''): 
    if request.method == 'GET': 
     query_tag = Tag.objects.get(name=tag) 
     primes = TaggedItem.objects.get_by_model(Prime, query_tag) 
     primes = primes.order_by('-date') 
     request.page = current_page 
     tcm_pp = TCM_ITEMS_PER_PAGE 
     pgurl = request.path 
    else: 
     return HttpResponseRedirect(request.path) 

    return direct_to_template(request, template_name, { 'primes' : primes, 'prime_total' : Prime.objects.count(), 'now': datetime.now(), 'page' : current_page, 'tcm_pp' : tcm_pp, 'tag' : tag, 'pgurl' : pgurl }) 

with_tag.html

{% extends "base.html" %} 
{% load comments %} 
{% load pagination_tags %} 

... 

    {% include "pagination.html" %} 
    {% paginate %} 

pagination.html

{% if is_paginated %} 
{% load i18n %} 

<div class="pagination"> 
    {% if page_obj.has_previous %} 
     <a href="{{ pgurl }}{{ page_obj.previous_page_number }}{{ getvars }}" class="prev">&lsaquo;&lsaquo; {% trans "previous" %}</a> 
    {% else %} 
     <span class="disabled prev">&lsaquo;&lsaquo; {% trans "previous" %}</span> 
    {% endif %} 
    {% for page in pages %} 
     {% if page %} 
      {% ifequal page page_obj.number %} 
       <span class="current page">{{ page }}</span> 
      {% else %} 
       <a href="{{ pgurl }}{{ page }}{{ getvars }}" class="page">{{ page }}</a> 
      {% endifequal %} 
     {% else %} 
      ... 
     {% endif %} 
    {% endfor %} 
    {% if page_obj.has_next %} 
     <a href="{{ pgurl }}{{ page_obj.next_page_number }}{{ getvars }}" class="next">{% trans "next" %} &rsaquo;&rsaquo;</a> 
    {% else %} 
     <span class="disabled next">{% trans "next" %} &rsaquo;&rsaquo;</span> 
    {% endif %} 
</div> 
{% endif %} 
+0

La {{pgurl}} seule variable n'apparaît-elle pas dans le modèle inclus? Vous avez d'autres - travaillent-ils tous? – thornomad

+0

@thornomad page getvars page_obj sont affichés mais pas pgurl J'ai essayé d'ajouter cette variable à l'objet de requête mais l'objet request n'est pas non plus passé. – Orca

+0

pouvons-nous voir vos URL? vous avez pgurl = '', alors peut-être que vos URL n'envoient pas pgurl pour remplacer cette valeur par défaut? –

Répondre

0

Il sera utile si vous postez la sortie de la page rendue. Le contexte devrait être passé, pourrait être vos balises de modèle à la place. Essayez d'affirmer et de vérifier si les variables ont été transmises correctement.

+0

La page est paginée et apparaît correctement. Ce que Im essayant d'accomplir est comme suit. J'ai une page example.com/tag/python/?page=1 et j'ai changé cela en example.com/tag/python/1 et j'ai fait les changements dans urls.py et views.py et défini une variable pour le courant page url sans page comme pgurl qui est example.com/tag/python/. Tout fonctionne bien et cette variable est passée dans le template pour la vue qui est with_tag.html mais la variable est accessible au template de pagination où je veux utiliser la var pour créer les liens next/back- {{pgurl}}/{{ page_obj.next_page_number}} {{getvars}} – Orca

Questions connexes