[英]django template: get dictionary's value based on the key that equals to certain tag's value
我對Web開發很陌生,我知道這可能是一種愚蠢的方法,但我想不出更好的方法。 在views.py中,方法以下列格式將名為sniffer_aps
的字典返回給模板:
sniffer_aps = {device1:[ap1, ap2], device2:[ap3, ap4, ap5], ......}
在模板中,我有一個下拉列表,列出了所有設備(device1,device2,......)。
在另一個字段中,我列出了屬於下拉列表中所選設備的所有aps。 我想根據我選擇的設備動態調整字段,但它確實不起作用。
下拉列表代碼是:
<select onchange="refresh(this.value)" id="sniffer_list">
{% for sniffer_ap in sniffer_aps %}
<option value={{ sniffer_ap }}>{{ sniffer_ap.plug_ip }}</option>
{% endfor %}
</select>
我的問題是,如何根據下拉列表中選擇的選項循環顯示aps字段中的值?
現在我的方法是使用javascript來檢測下拉列表的“onchange”事件,並相應地更改列出所有aps的字段的值,然后只獲取字段的值並將其視為字典的鍵。
function refresh(key) {
$('.router').attr('value') = key;
}
對於列出aps的字段,問題出在哪里。 我正在努力實現這樣的目標:
<select multiple="multiple" size="6">
{% for router in sniffer_aps[this.value] %}
<option class="router" value="">{{ router }}</option>
{% endfor %}
</select>
請糾正我的方法,或者如果有人能提供更好的方法。 非常感謝。
你在這里遇到了麻煩,因為你將服務器端代碼(Django的模板引擎)與客戶端代碼(你用於onchange
處理程序的Javascript代碼)混淆了。 在將生成的HTML傳遞到客戶端之前,您的服務器端代碼將在服務器上運行,因此您不能在客戶端Javascript和模板邏輯之間進行任何交互。
您可以使用Javascript和onchange
事件來更新列出應用程序的字段中的值 - 您可以在服務器上執行此操作,方法是在返回新請求時提交表單並使用Django更改HTML,但這需要一個新的網頁加載,並不像使用Javascript那樣快速或用戶友好。
我會接受這個:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.