Django 根据所选项目更新同一页面上 HTML 元素的内容

Django update content of HTML element on same page based on selected item

标题有点模糊,我想不出一个总结的方式。

我有 3 个 Django 模型。为方便起见,我们称它们为根、分支叶。一个根可以有多个分支,每个分支可以有多个叶子。

在我的模板中,我显示了从根 objects 填充的按钮。当用户单击其中一个按钮时,我想使用该根的 children 所有分支更新同一页面上另一个元素的内容。单击分支时,我想用所有叶子更新另一个元素。我假设两次更新的过程相同。

我是 Django 的新手,但不是编程的新手,我似乎无法找到一个很好的解释来说明如何检测哪个 'root' 被点击并将其传回 Django 以填充分支元素。

谁能提供一些指导?我可能不需要代码,只是更多地了解工作流程是什么。 E.G 使用 onclick 将点击的项目的名称发送到 javascript 函数,调用 python 函数获取所有分支,做一些魔术......

谢谢 米克

与 Django 相比,这更像是 JS 的东西。据我所知,对于您想要的动态内容类型,有两种选择:

  • 您可以加​​载整个“树”(所有根、枝和叶),显示样式为 none,然后通过 [=25 将适当的值更改为另一个值(块或内联) =] 当按下按钮时。对于分支,onClick 函数看起来像这样。
function displayBranch(branchId){
  for(let branch of document.getElementsByClass("branch-class"){
    branch.style.display = "none"
    if(branch.id == branchId) branch.style.display = "block"

  }
}
  • 或者您可以加载 none,但将端点添加到 Django API 以发送分支和叶子,然后使用 AJAX 调用在按下按钮时检索它们。这需要更多代码,所以我不会包含代码,但假设您了解基本的 AJAX 以及如何在您的应用中创建新端点。