这似乎是一个非常容易的问题,但我无法管理它:(
我有一个视图应该为我创建一个pdf文件。我需要一个循环,我不知道为什么它不起作用。我需要打印所有列表的问题。 我已经检查了,我在" pytanie"中有3个问题。列表,但我的循环打印我只有一个问题(最后一个问题)
for i in range(len(pytanie)):
p = canvas.Canvas(response)
p.drawString(10, 800, ' '+ pytanie[i].title)
此视图中的整个代码
from reportlab.pdfgen import canvas
from django.http import HttpResponse
from reportlab.graphics.shapes import Drawing
from reportlab.graphics.barcode.qr import QrCodeWidget
from reportlab.graphics import renderPDF
from django.contrib.auth.models import User
from pytania.models import Pytanie
def test_qr(request):
# Create the HttpResponse object with the appropriate PDF headers.
response = HttpResponse(content_type='application/pdf')
response['Content-Disposition'] = 'attachment; filename="egzamin.pdf"'
pytanie = Pytanie.objects.all()
for i in range(len(pytanie)):
p = canvas.Canvas(response)
p.drawString(10, 800, ' '+ pytanie[i].title)
qrw = QrCodeWidget('a')
b = qrw.getBounds()
w=b[2]-b[0]
h=b[3]-b[1]
d = Drawing(200,200,transform=[200./w,0,0,200./h,0,0])
d.add(qrw)
renderPDF.draw(d, p, 1, 1)
p.showPage()
p.save()
return response
答案 0 :(得分:2)
将p的初始化放在循环外
p = canvas.Canvas(response)
for pytanie in Pytanie.objects.all():
p.drawString(10, 800, ' '+ pytanie.title)
答案 1 :(得分:1)
我认为你应该改变字符串的坐标:
p = canvas.Canvas(response)
for i, pytanie in enumerate(Pytanie.objects.all()):
p.drawString(10, 800 + i*10, ' '+ pytanie.title)