在父模板中呈现子项的更新上下文

时间:2016-07-22 10:55:59

标签: templates django-templates parent-child django-cms

我尝试从父模板中访问子上下文中的一些变量。它没有问题,但我需要访问更新的上下文。

我的cms_plugins.py(子插件渲染方法):

...
context.update({
     'instance': instance,
     'address': address,
     'gps': gps,
})
return context

地址和gps是解析后的字符串。

我的base.html看起来像:

...
{% for plugin in instance.child_plugin_instances %}
var position{{ plugin.pk }} = geocode("{{ plugin.address }}");
var marker{{ plugin.pk }}=new google.maps.Marker({
    title: "{{ plugin.titleMarker }}",
    position: position{{ plugin.pk }},
    icon: mapicon
});
marker{{ plugin.pk }}.setMap(map);
var infowindow{{ plugin.pk }} = new google.maps.InfoWindow({
    disableAutoPan: true,
    content: "{% if plugin.titleMarker %}<p class='perex1' style='font-weight: bold;'>{{ plugin.titleMarker }}</p>{% endif %}"
    {% if plugin.nameOfPlace %}+ "{{ plugin.nameOfPlace }}</br>"{% endif %}
    {% if plugin.addressMarker %}+ "{{ plugin.addressMarker }}</br>"{% endif %}
    {% if plugin.zipcodeMarker %}+ "{{ plugin.zipcodeMarker }} {{ plugin.cityMarker }}</br></br>"{% endif %}
    {% if plugin.telMarker %}+ "<strong>TEL: </strong>{{ plugin.telMarker }}</br>"{% endif %}
    {% if plugin.faxMarker %}+ "<strong>FAX: </strong>{{ plugin.faxMarker }}</br>"{% endif %}
    {% if gps %}+ "<strong>GPS: </strong>{{ plugin.gps }}</br>"{% endif %}
});
...

我不能在子模板中写这个并使用{{ render_template plugin }},因为它会将它包装在<div class="cms-plugin cms-plugin-id">...</div>中,因为这些子插件只包含java脚本,所以会在它上面抛出错误。

现在,即使我写{{ plugin.address }}{{ address }}(与gps相同),也不会显示任何内容。我如何访问这些变量?或者我如何将这些变量附加到实例中,我可以通过plugin.name_of_variable访问它们?

编辑: 我做了一些解决方法。我在JS中为地址和GPS创建了一些解析器函数......但我真的很想在后端而不是前端中执行此操作。那么,我可以做我所要求的吗?

0 个答案:

没有答案