`If`语句不起作用
问题描述:
我写了一条if语句,但我不知道为什么它不起作用。`If`语句不起作用
首先“if语句”检查用户是否想用英语写一个测试(uzyt.jezyk_egzaminu == 'EN'
)。它应该只显示英文问题(pytanie.title
)。如果计算机找不到想要写英语考试的用户,请检查其他可能性(f.e 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)
等等 - 枚举你已经准备查询,并与循环变量从查询,以避免消除它们! - )
+0
当然。这很容易:)我得到了一个问题:)谢谢:) – 2015-01-31 18:48:28
你可以添加你得到的错误? – 2015-01-31 18:38:55