[英]`If` statement doesn't work
我写了一个if语句,但我不知道为什么它不起作用。
首先,“ if语句”检查用户是否要编写英文测试( uzyt.jezyk_egzaminu == 'EN'
)。 它应该仅显示英语问题( pytanie.title
)。 如果计算机找不到想要用英语编写测试的用户,则应检查其他可能性( fe uzyt.jezyk_egzaminu == 'DE'
),并以其他语言显示问题。
我只会用英语提问:(似乎一切正常。在页面底部,每个用户都有描述(选择DE或EN或FR)的说明。
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"'
uzyt = UserProfile.objects.all().order_by('user_id')
pytanie = Pytanie.objects.all().order_by('published')
pytanieDE = PytanieDE.objects.all().order_by('published')
pytanieFR = PytanieFR.objects.all().order_by('published')
p = canvas.Canvas(response)
for z, uzyt in enumerate(UserProfile.objects.all()):
if uzyt.jezyk_egzaminu == 'EN' :
for i, pytanie in enumerate(Pytanie.objects.all()):
p.drawString(10, 400 + i*210, ' '+ pytanie.title)
elif uzyt.jezyk_egzaminu == 'DE' :
for i, pytanieDE in enumerate(Pytanie.objects.all()):
p.drawString(10, 400 + i*210, ' '+ pytanieDE.title)
elif uzyt.jezyk_egzaminu == 'FR' :
for i, pytanieFR in enumerate(Pytanie.objects.all()):
p.drawString(10, 400 + i*210, ' '+ pytanieFR.title)
qrw = QrCodeWidget('http://127.0.0.1:8000/admin/userprofile/userprofile/'+str(uzyt.user_id)+'/')
b = qrw.getBounds()
w=b[2]-b[0]
h=b[3]-b[1]
d = Drawing(100, 100, transform=[100./w, 0, 0, 100./h, 0, 0])
d.add(qrw)
renderPDF.draw(d, p, 1, 1+z*10)
p.drawString(100, 1 + z*10, ' '+ str(uzyt.jezyk_egzaminu)+ ' ' + str(uzyt.imie) + ' ' + str(uzyt.nazwisko) + ' '+ str(uzyt.kierunek) )
p.showPage()
p.save()
return response
你所有的循环就像
for i, pytanieDE in enumerate(Pytanie.objects.all()):
除了循环变量的无关的拼写外,它们是绝对相同的-在每种情况下,您都在使用所有 Pytanie
对象,而不是对它们完全选择。
因此, if/elif
可能会完美运行,但您永远不会知道,因为您在该决策树的每个节中执行的操作都完全相同!-)
您的循环变量名称与之前的分配冲突:
pytanie = Pytanie.objects.all().order_by('published')
pytanieDE = PytanieDE.objects.all().order_by('published')
pytanieFR = PytanieFR.objects.all().order_by('published')
并因此覆盖它们(并重复.objects.all()
查询)。
我想象您实际想要做的事情,而不是上面实际显示的事情,可能是这样的:
if uzyt.jezyk_egzaminu == 'EN':
for i, pyt in enumerate(pytanie):
p.drawString(10, 400 + i*210, ' '+ pyt.title)
elif uzyt.jezyk_egzaminu == 'DE':
for i, pytDE in enumerate(pytanieDE):
p.drawString(10, 400 + i*210, ' '+ pytDE.title)
依此类推-枚举您已经准备好的查询,并使用与查询不同的循环变量命名,以免将其清除!-)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.