如果我想在 Django 模板中有条件地使用数据库数据,我需要做啥?
Posted
技术标签:
【中文标题】如果我想在 Django 模板中有条件地使用数据库数据,我需要做啥?【英文标题】:What do I need to do if I want to use database data conditionally in Django templates?如果我想在 Django 模板中有条件地使用数据库数据,我需要做什么? 【发布时间】:2021-12-30 19:22:44 【问题描述】:我正在 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>
【问题讨论】:
【参考方案1】:如果我理解正确,您不一定需要 JavaScript 来实现这一点。此外,<script>
缺少一个 t,并且您的 for 循环似乎根本没有将 HTML 添加到文档中。
您可以完全使用 Django 模板语言通过将按钮 for 循环与 if 条件集成,如下所示:
% if element.title == 'two_piece_suit' %
% for button in buttoning %
<Some HTML> button.title </Some HTML>
% endfor %
% endif %
这样,按钮列表只有在 title 为 two_piece_suit 时才会显示。
【讨论】:
以上是关于如果我想在 Django 模板中有条件地使用数据库数据,我需要做啥?的主要内容,如果未能解决你的问题,请参考以下文章