我对python和django框架很陌生。我面临一个小问题,就是无法为我的for循环分配变量。
在我的html文件中,有按钮和列表(使用循环渲染)。
例如:
纽扣
<li><a class="layer-item" href="#" onclick="selectLayer('base')" title="Base layer">Base layer</a></li>
<li><a class="layer-item" href="#" onclick="selectLayer('soil')" title="Soil layers">Soil layers</a></li>
在script
标签内部,我将变量值更新为
<script>
var layerType = "";
function selectLayer(layer){
layerType = layer;
}
</script>
另外我在同一个html文件中也有如下循环
{% for layer in base %}
<div class="col-4">
<span class="base-layer-title d-block">{{layer.title}}</span>
</div>
{% endfor %}
在这里,我要替换base
单击的按钮。
例如:
<a class="layer-item" href="#" onclick="selectLayer('soil')" title="Soil layers">Soil layers</a>
单击上面的按钮应使for循环为
{% for layer in soil %}
<div class="col-4">
<span class="base-layer-title d-block">{{layer.title}}</span>
</div>
{% endfor %}
从我的阅读中,您可以执行类似的操作以将值分配给变量。
{% with name="World" %} But not sure how to implement it in my issue.
任何帮助表示赞赏
另外我在同一个html文件中也有如下循环
{%用于基础%的图层} {{layer.title}} {%endfor%}
在这里,我想根据单击的按钮替换基数。
简而言之,Django是服务器端框架,它无法直接响应任何客户端活动。没有客户端库(如React,JQuery等),您将无法有效地做到这一点。
解决方法1
您可以单击鼠标向服务器发出新请求,然后使用新参数重新呈现整个页面。
urls.py
path('my_pattern/<slug:my_layer>', myview)
views.py
def myView(request, my_layer):
# your logics
base = get_layer_data(my_layer) # <-- logic to get list dynamically
return render(request, 'my_template.html', context={'base':base})
my_template.html
{% for layer in base %}
<div class="col-4">
<span class="base-layer-title d-block">{{layer.title}}</span>
</div>
{% endfor %}
...
<a class="layer-item" href="/my_pattern/soil" title="Soil layers">Soil layers</a>
<a class="layer-item" href="/my_pattern/some_other_layer" title="Some other layers">Soil layers</a>
...
在base
将具有动态生成的每个请求数据。
解决方法2
但是,您可以呈现页面上的所有数据,并在引导程序https://getbootstrap.com/docs/4.5/components/collapse/中使用折叠控制它
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句