2017-03-17 63 views
0

我試圖調用一個函數到Django的功能,但我不斷收到:調用函數到在Python(Django的)的其他功能

The view app.views.function1 didn't return an HttpResponse object. It returned None instead. 

我的看法是:

def function1(request): 
    [some api calls] 
    #Once this process is done I want to call my second function 
    function2() 

,然後我有

def function2(request): 

你如何調用其他功能在Django/Python的容易

ps.s.這些函數可能只是一個,我只是想分割它們讓我的代碼更具可讀性,並且有一個函數只能做一件事。

回答

4

錯誤是相當清楚的:

視圖app.views.function1沒有返回HttpResponse對象。它返回None而不是 。

您需要返回HttpResponse對象完成function1的時候,所以如果function2是你的最後一個函數,它應該返回HttpResponse對象,你應該返回函數的結果,以及:

def function1(request): 
    [some api calls] 
    #Once this process is done I want to call my second function 
    return function2(request) 

def function2(request): 
    # some hard work 
    return HttpResponse(...) 
1

通常,當我有一個實用程序功能時,我將實用程序部分分解出來,以便多個視圖可以引用相同的實用程序功能,而無需擔心請求對象/上下文。

但更具體地說,您的第一個函數(function1)沒有返回HttpResponse對象(如錯誤描述)。

你有兩條路走下來:

  1. 有無FUNC2返回一個HttpResponse對象(並傳遞給它的請求參數也一樣),然後有FUNC1返回什麼FUNC2返回(HttpResponse對象)。

  2. 讓func2返回任何你想要的,並讓func1返回一個HTTPResponse對象。

在任何一種情況下,func1都必須返回一個HttpResponse對象。然而,就像我上面所說的,如果func 1和func 2都是有效的視圖,並且包含所有的爵士樂,我會將func2中的任何內容完全排除到另一個函數上,並且同時具有func1和func2參考(一般)。

相關問題