问题遇到的现象和发生背景
django 用reportlab 把当前页面转成pdf可以下载的那种
现在网上找到的都是一个some_view()只有一个hello world。难道要一个个p.drawString()吗?教人教一半我也是服了
问题相关代码,请勿粘贴截图
import io
from app01 import models
from django import forms
from django.http import FileResponse
from django.shortcuts import redirect, render
from django.utils.safestring import mark_safe
from reportlab.pdfgen import canvas
def some_view(request):
# Create a file-like buffer to receive PDF data.
buffer = io.BytesIO()
# Create the PDF object, using the buffer as its "file."
p = canvas.Canvas(buffer)
# Draw things on the PDF. Here's where the PDF generation happens.
# See the ReportLab documentation for the full list of functionality.
p.drawString(100, 100, "Hello world.")
# Close the PDF object cleanly, and we're done.
p.showPage()
p.save()
# FileResponse sets the Content-Disposition header so that browsers
# present the option to save the file.
buffer.seek(0)
return FileResponse(buffer, as_attachment=True, filename="hello.pdf")
def user_list(res):
page_str = ""
size = 10
d = 0
page = int(res.GET.get("page", 1))
if page == 1:
start_page = 0
end_page = size
else:
end_page = page * size
start_page = end_page - size
total_data = models.UserInfo.objects.all().count()
data = models.UserInfo.objects.all()[start_page:end_page]
title = [field.verbose_name for field in models.UserInfo._meta.fields]
for i in range(1, total_data + 1, 10):
d += 1
if page == d:
page_str += f"""">page={d}">{d} """
else:
page_str += f"""page={d}">{d} """
page_str = mark_safe(page_str)
return render(res, "user_list.html", {"data": data, "title": title, "page_str": page_str})
运行结果及报错内容
怎样才能实现user_list视图的pdf化
我的解答思路和尝试过的方法
这是一个下载按钮
我想要达到的结果
some_view视图的执行是这样的