Javascript 从views.py访问pdf文件,该文件由Js在Django项目中创建

Javascript 从views.py访问pdf文件,该文件由Js在Django项目中创建,javascript,html,django,pdf,Javascript,Html,Django,Pdf,我正在尝试在我的Django项目中使用HTML呈现为pdf。我正在使用包表单js,并通过以下链接将我的html呈现为pdf: 我的模板: <div class="container-fluid py-5 bg-light"> <div class="col-xl-10 bg-white" id="pdf_portion"> <p>Lots of staff is in this div.

我正在尝试在我的
Django
项目中使用
HTML
呈现为pdf。我正在使用包表单js,并通过以下链接将我的
html
呈现为pdf:

我的模板:

<div class="container-fluid py-5 bg-light">
  <div class="col-xl-10 bg-white" id="pdf_portion">
    <p>Lots of staff is in this div. I just skip those unnecessary things in this question.</p>
  </div>
</div>

<button class="btn btn-primary" id="download"> download pdf</button>

<script src="https://cdnjs.cloudflare.com/ajax/libs/html2pdf.js/0.9.2/html2pdf.bundle.js"></script>

<script type="text/javascript">
  window.onload = function () {
    document.getElementById("download")
        .addEventListener("click", () => {
            const invoice = this.document.getElementById("pdf_portion");
            console.log(invoice);
            console.log(window);
            var opt = {
                margin: 0.8,
                filename: 'myfile.pdf',
                image: { type: 'jpeg', quality: 0.98 },
                html2canvas: { scale: 4 },
                jsPDF: { unit: 'in', format: 'A4', orientation: 'portrait' }
            };
            html2pdf().from(invoice).set(opt).save();
        })
  }
</script>

这个部门有很多员工。我只是跳过了这个问题中那些不必要的东西

下载pdf window.onload=函数(){ document.getElementById(“下载”) .addEventListener(“单击”,()=>{ const invoice=this.document.getElementById(“pdf_部分”); 控制台日志(发票); 控制台日志(窗口); 变量opt={ 利润率:0.8, 文件名:“myfile.pdf”, 图像:{type:'jpeg',质量:0.98}, html2canvas:{比例:4}, jsPDF:{单位:'in',格式:'A4',方向:'RATIATE'} }; html2pdf().from(invoice).set(opt).save(); }) }
这里的“下载”按钮为我们提供了下载pdf的选项。我需要以任何方式在我的
views.py
中发送pdf,这样我就能将它保存在数据库的
文件字段中


请建议如何在我的views.py中访问该pdf文件。

html2pdf软件包具有处理生成的pdf的功能,而不是直接下载它们。它的outputPdf函数将所需的数据格式作为输入并返回输出

当前支持的数据格式有:

  • 阵列缓冲器
  • 斑点
  • 布洛布里
  • 数据字符串
  • 数据URI
它可以按如下方式使用:

const elem = document.getElementById('html'); //element whose pdf is to be made

html2pdf().from(elem).outputPdf('arraybuffer').then((result) => {
 // write your desired code here for sendin results to django views
});

现在,为了将这些数据发送到后端,您可以在这个函数中简单地使用AJAX post请求。

我对AJAX不太熟悉。你能给我推荐一下AJAX post请求吗?如果你熟悉javascript,博客可以帮助你开始使用AJAX向django后端发送数据。