2017-09-21 2 views
0

Je travaille pour ajouter quelques détails d'affaires en tant que processeur de contexte dans une application appelée Business. J'ai inclus dans ce dossier un dossier intitulé templatetags pour les fichiers __init__.py et business_tags.py. Mon problème est lorsque le processeur de contexte affiche un résultat, je suis incapable d'afficher les résultats en boucle.Objet d'affichage pour les processeurs de contexte de Django

fichier business_tags.py:

from django import template 
register = template.Library() 
from django.contrib.auth.models import User 
from ..models import Businessprofile 

@register.simple_tag 
def my_biz(request): 
    current_user = request.user.id 
    biz = Businessprofile.objects.filter(owner=current_user) 

    return biz 

Sur mon dossier de vue, je suis actuellement fait un pour/endfor pour la boucle:

<!--content--> 
{% load business_tags %} 

{% my_biz request %} 

{% for biz in my_biz %} 
    {{ biz }} 
{% endfor %} 
<!--end content--> 

Comment afficher les résultats du processeur de contexte que une boucle pour?

+0

Pourquoi gardez-vous parler de processeurs de contexte lorsque cela est clairement une étiquette de modèle? –

Répondre

0

Votre balise simple est juste retour l'objet (il est pas enregistré dans « my_biz »), vous devez enregistrer le retour dans une variable de cette façon:

{% my_biz request as my_biz_var %} 

{% for biz in my_biz_var %} 
    {{ biz }} 
{% empty %} 
    my_biz_var is empty 
{% endfor %} 

Note Additionnelle: tout comme pointé par Dani Daniel Roseman, ce que vous faites n'est pas un processeur de contexte mais une simple balise.

procesors contexte: https://docs.djangoproject.com/en/1.11/ref/templates/api/#django.template.RequestContext

Simple Tags:

https://docs.djangoproject.com/en/1.11/howto/custom-template-tags/#simple-tags

+0

Cela a-t-il fonctionné pour vous? – Nazkter