我尝试从父模板中访问子上下文中的一些变量。它没有问题,但我需要访问更新的上下文。
我的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创建了一些解析器函数......但我真的很想在后端而不是前端中执行此操作。那么,我可以做我所要求的吗?