在 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 了解更多信息。
我按照这个 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 了解更多信息。