Django 如何为 {% include %} 收集 HTML 并分配给 JS 变量

Django How to gather HTML for {% include %} and assign to JS variable

我正在使用 JSPDF 将 HTML 转换为 PDF。如果我有一个呈现的页面然后单击一个按钮就可以导出适当的 PDF,这将非常简单,但是,我试图通过 JSPDF 创建收据并且在提供 PDF 之前呈现页面不是一个好的选择。

有了这个,我正在使用 Django,基本上我想做的是使用模板的 html 来呈现我需要的收据:

例如:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.0.272/jspdf.min.js"></script>

let doc = new jsPDF();
$('#click').click(function () {
   let a  = {% include 'receipt_template.html' with data=payment_data %};
   doc.fromHTML(a, 0, 0, {
      'width': 170
   });
   doc.save('receipt.pdf');
});

但这不起作用,因为我没有收集模板的 HTML,我只是在页面上渲染它。我想做的事情可行吗?

您将 html 代码分配给 a 变量。

只需引用您包含的模板 - 将此代码更新为:

let a  = `{% include 'receipt_template.html' with data=payment_data %}`;

更新

正如所说,可能存在转义问题。

在我的示例中,您不能在 receipt_template.html 中使用 ` 并包含其中。你需要逃离他们。

更新 2

也可以使用JSX将包含的模板直接处理成js变量。

那么你的代码将类似于:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.0.272/jspdf.min.js"></script>
<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>

<script type="text/babel">
  let doc = new jsPDF();
  $('#click').click(function () {
   let a  = ({% include 'receipt_template.html' with data=payment_data %});
   doc.fromHTML(a, 0, 0, {
    'width': 170
   });
   doc.save('receipt.pdf');
  });
</script>

但是,您几乎不需要使用这种方法。