![](/img/trans.png)
[英]How to collect data from google form and store in jsonfield in django?
[英]How to assemble the variable name to use data from JSONField inside the Template in django?
我正在嘗試使用 Django 框架為電視劇建立一個網站,我在 models.py 中放入了關於該節目的各種詳細信息和一個 JSONField(名為“episodes”)來定義每個季節的季節和劇集數。
示例: { "1": 15, "2": 25, "3": 23}
其中第 1 季包含 15 集,第 2 季包含 25 集,依此類推
當我嘗試在正在播放該系列的模板中制作下拉菜單時,問題就開始了,這樣用戶就可以 select 要觀看的劇集:此代碼有效:
Season 1
{% with ''|center:show.episodes.1 as range %}
{% for episode in range %}
Episode {{forloop.counter}}
{% endfor %}
{% endwith %}
Season 2
{% with ''|center:show.episodes.2 as range %}
{% for episode in range %}
Episode {{forloop.counter}}
{% endfor %}
{% endwith %}
Season 3
{% with ''|center:show.episodes.3 as range %}
{% for episode in range %}
Episode {{forloop.counter}}
{% endfor %}
{% endwith %}
但是,如果我可以在彼此內部使用 2 個 for 循環,一個用於季節,一個用於劇集,這聽起來很容易,但由於某種原因我做不到,這肯定會更干凈。
我試過了:
{% for season in show.episodes %}
Season {{forloop.counter}}
{% for episode in show.episodes.forloop.counter %}
Episode {{forloop.counter}}
{% endfor %}
{% endfor %}
是的,是show.episodes.forloop.counter
線阻止了我。
那絕對行不通,我試過:
{% for season in show.episodes %}
Season {{forloop.counter}}
{% for episode in show.episodes|add:forloop.counter %}
Episode {{forloop.counter}}
{% endfor %}
{% endfor %}
但這不起作用,因為我試圖將數字添加到已經加載的 show.episodes 中,這是 JSON 的字典(錯誤)
我也試過像這個問題一樣做一個自定義過濾器: How to assemble a variable name in Django templating language? 但看起來發生了同樣的事情:將數字添加到已經加載的 show.episodes 中,這是 JSON 的字典(錯誤)
我知道這看起來很容易,但是兩天來我一直在嘗試找出解決方案但我做不到,所以如果可以的話,請幫助我。 順便說一句,我是個初學者 :)
show.episodes = { "1" : 15 , "2" : 25 , "3" : 23}
建議以這種方式遍歷你的字典:
{% for season, series in show.episodes.items %}
Season {{ season }}
{% for _ in ''|center:series %}
Episode {{forloop.counter}}
{% endfor %}
{% endfor %}
對於不大的詞典來說是可以的。 為了處理更大的字典,我建議使用自定義模板過濾器或標簽。 或者移動處理邏輯查看function。
過濾器和標簽文檔https://docs.djangoproject.com/en/3.2/howto/custom-template-tags/#custom-template-tags-and-filters
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.