【发布时间】:2016-02-08 14:12:00
【问题描述】:
我制作了一个模板标签,目的是简化 Angular 的包含。
负责在上下文中设置一些变量的标签如下:
@register.simple_tag(takes_context=True)
def ng_controller(context, controller_name, file_name):
context['angular_import'] = True
context['angular_controller_file'] = file_name
return 'ng-controller="{}"'.format(controller_name)
根模板有这个块代替 javascript 导入
{% block container_content %}{% endblock %}
{% block angular_inclusion %}{% endblock %}
继承根模板的模板是this
{% extends 'root.html' %}
{% block container_content %}
<div class="row">
<div class="col-sm-12">
<div class="well" {% ng_controller 'CreateEdictController' 'js/controllers/create-edict-controller.js' %}>
{{ angular_controller_file }}
</div>
</div>
</div>
{% endblock %}
{% block angular_inclusion %}
{{ angular_controller_file }}
{% endblock %}
我可以在第一个块中成功访问{{ angular_controller_file }},但在第二个块中不能。如何确保上下文操作也影响第二个块?
【问题讨论】:
-
我原以为它会反过来,因为您在根目录中没有
container_content...您如何验证您可以/不能访问该变量? -
@Sayse 对不起,我省略了。根模板确实有块
container_content -
看起来好像上下文变量的范围被限制在与模板标签相同的范围内,使用
include包含一个javascript文件或html sn-p 可能更有意义,但我不确定我是否完全理解用例
标签: python django django-templates