[英]What do I need to do if I want to use database data conditionally in Django templates?
我正在 Django 的電子商務商店工作。 我想知道如何使用render()
方法傳遞給模板的數據庫數據,有條件地通過 JavaScript 或 AJAX 或 JSON?
例如,假設我有以下models.py
:
from django.db import models
class Suit(models.Model):
title = models.CharField(max_length = 100, verbose_name = "Title")
img = models.FileField(upload_to = 'suit-products/', null = True, verbose_name = "Picture")
def __str__(self):
return f"{self.title}"
class Buttoning(models.Model):
title = models.CharField(max_length = 100, verbose_name = "Title")
img = models.FileField(upload_to = 'buttonings/', null = True, verbose_name = "Picture")
def __str__(self):
return f"{self.title}"
和以下views.py
from django.shortcuts import render
def index(request):
suit_prods = Suit.objects.all()
buttoning = Buttoning.objects.all()
context {
"suit_prods": suit_prods,
"buttoning": buttoning
}
return render(request, "index/index.html", context)
和以下index.html
(模板):
{% for element in suit_prods %}
<li>
<a href="#">
<div id="menu">
<img src="{{ element.img.url }}" />
<span>{{ element.title }}</span>
<span></span>
</div>
</a>
</li>
{% endfor %}
現在我想要的是,如果index.html
中的列表項中單擊的element
的title
為"two_piece_suit"
,則將{{ buttoning }}
的項顯示為列表,否則通過。
如果我使用一些 JS 語法來解釋它,那么我想要以下行為:
<scrip>
var suit_menu = document.getElementsByClassName("menu");
for(var i = 0; i < suit_menu.length; i++) {
if(suit_menu.text == "two_piece_suit") {
{% for element in buttoning %}
<li>
<a href="#">
<div id="buttoning">
<img src="{{ element.img.url }}" />
<span>{{ element.title }}</span>
<span></span>
</div>
</a>
</li>
{% endfor %}
}
}
</script>
如果我理解正確,您不一定需要 JavaScript 來實現這一點。 此外, <script>
缺少,並且您的 for 循環似乎根本沒有將 HTML 添加到文檔中。
您可以完全使用 Django 模板語言來實現這一點,方法是將 for 循環按鈕與 if 條件集成,如下所示:
{% if element.title == 'two_piece_suit' %}
{% for button in buttoning %}
<Some HTML>{{ button.title }}</Some HTML>
{% endfor %}
{% endif %}
這樣,僅當標題為 two_piece_suit 時才會顯示按鈕列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.