【发布时间】:2017-01-07 17:01:06
【问题描述】:
我想要什么
包含模板标签,它返回使用次数并且在使用模板继承时不会中断。我尝试在上下文中存储计数器,但它没有按我的预期工作。
base.html
{% block body %}
{% my_tag %}<br>
{% my_tag %}<br>
{% endblock %}
page.html
{% extends 'base.html' %}
{% block body %}
{{ block super }}
{% my_tag %}<br>
{% my_tag %}<br>
{% endblock %}
渲染结果:
1
2
3
4
我尝试了什么
@register.inclusion_tag('tagtemplate.html', takes_context=True)
def my_tag(context):
counter = context.get('tag_counter', 1)
ctx = {'tag_counter': counter}
context['tag_counter'] = counter + 1
return ctx
结果:
1
2
1
2
什么有效
添加了向请求添加计数器的中间件
class TagCounterMiddleware(object):
def process_request(self, request):
request.tag_counter = 1
并更改了模板标签
@register.inclusion_tag('tagtemplate.html', takes_context=True)
def my_tag(context):
request = context.get['request']
ctx = {'tag_counter': request.tag_counter}
request.tag_counter += 1
return ctx
感谢@SardorbekImomaliev 的建议! :)
【问题讨论】:
-
我建议把你的柜台放在
request。 -
@SardorbekImomaliev 请提交您的评论作为答案,因为它运作良好:)
-
已提交。不客气。
标签: python django python-2.7 django-templates django-views