如何让Puppeteer在Django中访问需要登录的视图?

时间:2018-04-24 08:42:54

标签: python django pdf puppeteer

我的目标是使用Puppeteer从Django的HTML视图生成PDF。优选地,每次保存特定模型时都会发生这种情况。该视图要求用户登录并拥有视图中使用的模型实例。当然,这在尝试启动Puppeteer实例以访问视图并将其转换为PDF时会产生问题 - 我得到的只是登录页面的PDF。

我可以想到几种方式,其中没有一种方法能够成为做事的正确方法:

  • 获取用户会话ID并在Puppeteer中设置相应的cookie,无论是在命令行还是使用环境变量 - 我不确定这实际上是否有效,我认为存在安全问题,因为我想在model.save()方法中这样做,所以我不一定能够访问用户会话ID。

  • 仅在未从localhost访问时才使视图需要登录 - 这似乎是一个安全问题。

其他方法是使用HTML-to-PDF库,但是这些文件对他们可以理解的HTML / CSS有很多限制,或者直接使用reportlab绘制PDF而不通过中间体HTML阶段。

我遗失的任何想法或解决方案?

1 个答案:

答案 0 :(得分:1)

最简单的方法是自己渲染模板,将输出保存到临时静态HTML文件,然后用Puppeteer打开该文件。

您可能需要调整生成的HTML,以确保可以通过适当的绝对URL和协议访问所有静态资源。