2015-01-31 242 views
0

我寫了一條if語句,但我不知道爲什麼它不起作用。`If`語句不起作用

首先「if語句」檢查用戶是否想用英語寫一個測試(uzyt.jezyk_egzaminu == 'EN')。它應該只顯示英文問題(pytanie.title)。如果計算機找不到想要寫英語考試的用戶,請檢查其他可能性(f.e uzyt.jezyk_egzaminu == 'DE')並以其他語言顯示問題。

我只在英語得到的問題:(看來一切正常在頁面底部的每個用戶都有說明(語言選擇了DE或EN或FR)

You can check this file here

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 
+0

你可以添加你得到的錯誤? – 2015-01-31 18:38:55

回答

2

所有你喜歡的循環

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