javascript - 将 Django 模板变量替换为通过 Javascript 创建的变量

标签 javascript html django

我对 Django 和 Javascript 非常陌生(< 3 周!),并且有一个可能很愚蠢的问题,因此我们将不胜感激。

在我当前的代码中,我有一个用 HTML 呈现的表格,代码如下:

<table border="1" class="dataframe">
      <thead>
        <tr>
          <th>{{ results.0.columns.1 }}</th>
          <th>{{ results.0.columns.1 }} </th>
          <th>{{ results.0.columns.2 }} </th>
          <th>{{ results.0.columns.6 }} </th>
        </tr>
      </thead>
      <tbody>
      {% for row in results.0.values %}
        <tr>
          <td> {{row.0}} </td>
          <td> {{row.1}} </td>
          <td><img src="{{row.2}}" alt="img" height="150"></td>
          <td> {{row.6}} </td>
        </tr>
      {% endfor %}
      </tbody>
    </table>

如您所见,我在许多区域引用了格式为 {{someDjangoVariable}} 的 django 模板变量。

但是,我想用 Javascript 创建的变量替换这些变量。我正在使用 Javascript 来获取一些用户输入,这最终会改变表的 View 。

我的Javascript设置如下:

<script> 
     function myFunction() {
        var index = someNumber
        var string = `results.${index}.columns.0`;

     document.getElementById('demo').innerHTML = string;
  }
</script>

在 Javascript 中创建的 string 变量会产生完全模仿 Django 模板变量的结果。例如,string = results.0.columns.1

但是,我不确定如何将此字符串变量传递到 HTML 本身。理想的 html 格式应该是这样的:

      <thead>
        <tr>
          <th>{{ string1 }}</th>
          <th>{{ string2 }} </th>
          <th>{{ string3 }} </th>
          <th>{{ string4 }} </th>
        </tr>
      </thead>
      <tbody>
      {% for row in string5 %}
        <tr>
          <td> {{row.0}} </td>
          <td> {{row.1}} </td>
          <td> {{row.2}} </td>
          <td> {{row.6}} </td>
        </tr>
      {% endfor %}
      </tbody>
    </table>

Any guidance on how I can do this? 

最佳答案

一旦您在浏览器中运行 javascript,就不再有任何 django 模板的概念。然后您将处理纯 html/javascript。

在这种情况下,三种最常见的方法是:

  1. 将 html 和 javascript 作为功能组件交付,与模板完全分开。仅使用您的模板来构建初始页面。不幸的是,在大多数情况下,这会导致功能重复。
  2. 将数据以 json 形式与您提供的网页捆绑在一起,然后使用 JavaScript 模板语言将其呈现在客户端。
  3. 在客户端和服务器上使用相同的模板系统。您可以使用现有的众多模板系统(react/angular/etc)中的任何一个,并运行 node.js 服务器来将其呈现在服务器端。这可能是一个又深又复杂的兔子洞。您开始的 Google 关键字将是“django javascript 服务器端渲染”

关于javascript - 将 Django 模板变量替换为通过 Javascript 创建的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54355113/

相关文章:

javascript - 如何在 Jquery 中将 li 类更改为 li id

javascript - 现成的 JavaScript 可同时显示/隐藏多个元素

javascript - 在两列中左右浮动不同数量的元素,即使高度不同

html - 每次我调整大小时,文本都会覆盖图像,无论我做什么,它都会与 Logo 重叠

Python SSL 连接 "EOF occurred in violation of protocol"

javascript - 如何禁用 django 中的 html 按钮?

django - 将 Excel 文件从 django View 返回到 html 以便在客户端下载

javascript - 展开时控制台日志中的输出不匹配

javascript - 使用javascript正确实现创建和删除功能

html - 移动版全宽 100%,去掉右边的空格