显示Django Context Processors的对象

时间:2017-09-21 17:16:12

标签: python django django-views

我正在努力在名为Business的应用中添加一些业务详细信息作为上下文处理器。我在templatetags__init__.py文件中添加了一个标题为business_tags.py的文件夹。我的问题是当上下文处理器显示结果时,我无法将结果显示为循环。

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

在我的视图文件中,我目前为循环创建了for / endfor:

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

{% my_biz request %}

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

如何将上下文处理器的结果显示为for循环?

1 个答案:

答案 0 :(得分:0)

您的简单标记只是返回对象(它不保存在“my_biz”中),您需要以这种方式将返回值保存在变量中:

{% my_biz request as my_biz_var %}

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

Aditional note :DaniDaniel Roseman指出,你所做的不是上下文处理器,而是一个简单的标签。

上下文处理器: https://docs.djangoproject.com/en/1.11/ref/templates/api/#django.template.RequestContext

简单标签:

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