如何添加PDF供管理员查看订单

我尝试在管理面板中添加通过 PDF 查看订单的选项,但收到错误,我不知道原因也不知道如何修复它。


这就是我一步一步做的。现在的问题是,我已尝试重新启动所有内容,但仍然收到错误消息。


$ pip install weasyprint django-import-export

然后我将其添加到已安装的应用程序中'import_export', 这是 admin.py


def order_pdf(obj):

    return mark_safe('<a href="{}">PDF</a>'.format(reverse('orders:admin_order_pdf', args=[obj.id])))



order_pdf.short_description = 'Order PDF'


class OrderAdmin(ImportExportActionModelAdmin):

    list_display = ['id', order_pdf]

这是views.py


@staff_member_required

def admin_order_pdf(request,order_id):

    Order = get_object_or_404(order,id=order_id)

    html = render_to_string('order/pdf.html',{'order':Order})

    response = HttpResponse(content_type='application/pdf')

    response['Content-Disposition'] = 'filename="order_{}.pdf"'.format(Order.id)

    # weasyprint.HTML(string=html).write_pdf(response,stylesheets=[weasyprint.CSS(settings.STATIC_ROOT + 'css/pdf.css')])

    weasyprint.HTML(string=html).write_pdf(response,stylesheets=[weasyprint.CSS(settings.STATIC_ROOT)])


    return response

这是 url.py


    path('admin/order/(?P<order_id>\d+)/pdf/$', views.admin_order_pdf, name='admin_order_pdf')


牛魔王的故事
浏览 62回答 1
1回答

小怪兽爱吃肉

weasyprint 或 django-import-export 依赖于 libcairo 是一个共享库。有些 python 包会自动编译所有依赖项,但情况并非如此。如果您不想自己弄清楚如何安装 libcairo,我建议您使用 Anaconda,它在 Windows 上安装依赖项方面做得很好。https://www.anaconda.com/products/individual我验证了 Anaconda 具有 cairocffi 包,它是触发错误的 libcairo 周围的 python 包装器。https://anaconda.org/conda-forge/cairocffi
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python