在 Django3 中生成 pdf 时出现 405 错误

405 error while generating a pdf in Django3

我按照这个 coadingforentrepreneurs 教程生成了 pdf,它工作正常。

问题是当我使用 post 请求生成 pdf 时,它显示 405 错误。我正在使用 post 方法访问客户 ID 以生成发票。

这是我的 GeneratePDF class

class GeneratePDF(View):
    def get(self, request, *args, **kwargs):
        
            if request.method == 'POST':
                template = get_template('head/invoice.html')
                context = {
                "customer":"aaaa"
                }
                html = template.render(context)
                pdf = render_to_pdf('head/invoice.html', context)
                if pdf:
                    response = HttpResponse(pdf, content_type='application/pdf')
                    filename = "Invoice_%s.pdf" %("12341231")
                    content = "inline; filename='%s'" %(filename)
                    download = request.GET.get("download")
                if download:
                    content = "attachment; filename='%s'" %(filename)
                response['Content-Disposition'] = content
                return response
            
            template = get_template('head/invoice.html')
            context = {
                "customer":"aaaa"
            }
            html = template.render(context)
            pdf = render_to_pdf('head/invoice.html', context)
            if pdf:
                response = HttpResponse(pdf, content_type='application/pdf')
                filename = "Invoice_%s.pdf" %("12341231")
                content = "inline; filename='%s'" %(filename)
                download = request.GET.get("download")
                if download:
                    content = "attachment; filename='%s'" %(filename)
                response['Content-Disposition'] = content
                return response

我没有编辑任何其他文件

这是服务器的响应

Method Not Allowed (POST): /employee/customer_printbill/
Method Not Allowed: /employee/customer_printbill/

我是 django 的初学者,我无法解决这个问题。请帮帮我。

您混合了基于函数的视图和基于 class 的视图。您应该在基于 class 的视图中定义 post 方法,请求将被分派到该 post 方法。因此,您无需在 get 方法中检查 request.method 是否为 POST,因为 POST 请求将由您的 post 方法处理。请参阅 Django Docs 了解更多信息。