2012-10-29 2 views
0

내 PC에서 django로 테스트하고 있는데, if 문이 true이고 r1 변수가 옳지 않으면 코드를 실행하면됩니다.if django if 진술

def trovapernome(request, aggregatore, nome): 
    url = urllib.urlopen("http://127.0.0.1:8000/media/%s.xml" % (aggregatore)) 
    richiesta = url.read() 
    tree = ET.fromstring(richiesta) 
    iterator = tree.getiterator("location") 
    t = get_template('prova.xml')   
    for name in tree.iter('name'): 
     if name.text.lower() == nome.lower(): 
      c = Context({'id' : name.text}) 
      r1 = HttpResponse(t.render(c), mimetype='application/xml') 
      return r1 

그렇지 않으면이 코드 :

def trovapernome(request, aggregatore, nome): 
    url = urllib.urlopen("http://127.0.0.1:8000/media/%s.xml" % (aggregatore)) 
    richiesta = url.read() 
    tree = ET.fromstring(richiesta) 
    iterator = tree.getiterator("location") 
    t = get_template('prova.xml')   
    for name in tree.iter('name'): 
     if name.text.lower() == nome.lower(): 
      c = Context({'id' : name.text}) 
      r1 = HttpResponse(t.render(c), mimetype='application/xml') 
     else: r1 = HttpResponse(t.render(Context({'id' : 'prova'})), mimetype='application/xml') 
    return r1 

반환 당신은 트리의 여러 요소를 통해 루핑

답변

0

당신은 return로 첫 번째 코드 블록에서 반복되지는 제대로 들여 쓰기하지 않습니다. else

for name in tree.iter('name'): 
    if name.text.lower() == nome.lower(): 
     c = Context({'id' : name.text}) 
     r1 = HttpResponse(t.render(c), mimetype='application/xml') 
    else: r1 = HttpResponse(t.render(Context({'id' : 'prova'})), mimetype='application/xml') 
return r1 
를 사용하는 경우

for name in tree.iter('name'): 
    if name.text.lower() == nome.lower(): 
     c = Context({'id' : name.text}) 
     r1 = HttpResponse(t.render(c), mimetype='application/xml') 
     return r1 
# move return indentation to match here, i.e after the for loop completes 

return가 두 번째 블록에 일치하는 방법을 알아보십시오

1

항상 다른 문. 첫 번째 버전에서는 첫 번째 요소를 처리 할 때 즉시 반환합니다. 두 번째 버전에서는 모두 요소를 트리에 처리 한 후에 만 ​​반환합니다.

여러 일치와 함께 할 필요가 무엇을 결정하거나 루프 내에서 어느 반환

:

for name in tree.iter('name'): 
    if name.text.lower() == nome.lower(): 
     c = Context({'id' : name.text}) 
     r1 = HttpResponse(t.render(c), mimetype='application/xml') 
    else: r1 = HttpResponse(t.render(Context({'id' : 'prova'})), mimetype='application/xml') 
    return r1 # return the *first* match.