現在的index.html是我想補充這是對應到這個列表的內容的數量數
<html>
<head>
<script type="text/javascript" src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/chosen/1.8.2/chosen.jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/chosen/1.4.2/chosen.jquery.js"></script>
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/chosen/1.4.2/chosen.css">
</head>
<body>
<select id="mainDD" data-placeholder="Choose" class="chzn-select" style="width:600px;">
{% for i in json_data.items.values %}
<option>{{ i }}</option>
{% endfor %}
</select>
<select name="type" id="type1">
{% for j in json_data.type1.values %}
<option>{{ j }}</option>
{% endfor %}
</select>
<select name="type" id="type2">
{% for k in json_data.type2.values %}
<option>{{ k }}</option>
{% endfor %}
</select>
<select name="type" id="type3">
{% for l in json_data.type3.values %}
<option>{{ l }}</option>
{% endfor %}
</select>
<select name="type" id="type4">
{% for m in json_data.type4.values %}
<option>{{ m }}</option>
{% endfor %}
</select>
<script type="text/javascript">
$(document).ready(function() {
$('#mainDD').on('change', function() {
console.log($(this).val());
console.log($('#mainDD :selected').text()) ;
var thisType = "type" + $(this).val();
for(i=1; i<5; i++) {
var thisId = "type" + i;
console.log(thisType + " " + thisId);
if(thisType !== thisId) {
$("#"+thisId).hide();
}
else {
$("#"+thisId).show();
}
}
}).trigger('change');
});
</script>
</body>
</html>
我想補充數量一樣。所以標記我的理想輸出是
<select name="type" id="type1">
<option value="1">a-1</option>
<option value="2">a-2</option>
<option value="3">a-3</option>
<option value="4">a-4</option>
</select>
<select name="type" id="type2">
<option value="5">b-1</option>
<option value="6">b-2</option>
<option value="7">b-3</option>
<option value="8">b-4</option>
<option value="9">b-5</option>
</select>
<select name="type" id="type3">
<option value="10">c-1</option>
<option value="11">c-2</option>
</select>
<select name="type" id="type4">
<option value="12">d-1</option>
<option value="13">d-2</option>
<option value="14">d-3</option>
</select>
但現在j & k & l & m被json文件讀取,並且這個jon文件可能是不同的內容數量。例如,現在j
有 {'type1': [{'---': '---', ‘A’: ‘a’, ‘B’: ‘b’, ‘C: ‘c’, ‘D’: ‘d’}]}
但是也許將來j有{'type1': [{'---': '---', ‘A’: ‘a’, ‘B’: ‘b’}]}
或{'type1': [{'---': '---', ‘A’: ‘a’, ‘B’: ‘b’, ‘C: ‘c’, ‘D’: ‘d’,'E':'e','F','f'}]}
所以我想通過使用數值顯示這些值,但我不明白我該怎麼做。我該如何寫它? views.py是
from collections import OrderedDict
from django.shortcuts import render
import json
def index(request):
with open('./data/data.json', 'r') as f:
json_data = json.loads(f.read(), object_pairs_hook=OrderedDict)
return render(request, 'index.html', {'json_data': json_data})
通過觀察一個答案,我在寫的index.html
{% preprocessed = [] %}
{% counter = 0 %}
{% for key in ["type1", "type2", "type3", "type4"]: %}
{% values = [(i + counter, value) for i, value in enumerate(json_data[key].values())] %}
{% preprocessed.append((key, values)) %}
{% counter = len(data[key]) %}
{% for key, values in preprocessed %}
<select name="type" id="{{ key }}">
{% for counter, value in values %}
<option value="{{ counter }}">{{ value }}-{{counter}}</option>
{% endfor %}
</select>
{% endfor %}
TemplateSyntaxError在/應用/ 無效塊標記上線14: '預處理'。你忘了註冊或加載這個標籤嗎?錯誤發生。
這個數字是否需要對應於特定的數據?如果是這樣,你可能會有一段糟糕的時間,因爲json文件沒有以任何特定的順序通過。 –
@TimmSimpkins是的它確實如此。但我不這麼認爲,因爲我使用OrderedDict – user8634222