2012-11-10 3 views
0

작동하지 :장고 - 함수의 응답 렌더링 -이 같은 전망이

return some_function() 

그러나 그것을 :이 같은 함수를 호출하는 경우 다음

def myview(request): 
     print "A" 

     some_function() 

     return HttpResponse("This should not appear") 

    def some_function(): 
     return render_to_response("templ.html", {}, context_instance=RequestContext(request)) 

을, 함수는 템플릿을 렌더링 항상 반환 할 함수를 기대하고 있지만 특정 시간에만 함수를 반환 할 싶습니다. 보기에 반환할지 여부를 묻는 일부 논리를 사용할 수 있지만보기에서 모든 작업을 수행 할 수 있으므로 함수를 호출 할 수 있습니까?

+3

나는 처음에 질문으로 잘못 인도되었는데, 무엇을 성취하려고합니까? – bakkal

+0

질문은 다소 혼란 스럽습니다. 여기서 무엇을하려고하는지 명확히하십시오. – tamakisquare

답변

2

당신은 함수에서 응답을 렌더링 할 수 있습니다,하지만 당신이 필요로하는 것은 귀하의 경우 some_function() 실행 않습니다 혼자 return some_function()하지 some_function(), 하지만, 반환 값은보기의 반환 값으로 전달되지 myview()

따라서 실행 흐름은 계속 진행되어 return HttpResponse("This should not appear"), 에 도달하므로보기에 표시되는 응답입니다.

(아무 것도 반환하지 않습니다 함수 인 myview())

당신은 혼자가 some_function() (및 return없이)를 가지고 있다면, 다음보기 만 응답이 반환, 과 장고는 불평 것입니다.

로직을 사용하여 코스의 흐름을 제어 할 수 있습니다 (예 : return). :

def my_view(request): 

    if request['x'] == 'a': 
     return function_a() 
    elif request['x'] == 'b': 
     return function_b() 

    return some_other_response() 

function_x()은 유효한 응답을 반환합니다.