在Python中调用函数到另一个函数(Django)

时间:2017-03-17 16:14:44

标签: python django

我试图将一个函数调用到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中的其他函数

P.S。这些函数可能只是一个,我只想将它们分开以使我的代码更具可读性并且只有一个函数只做一件事。

2 个答案:

答案 0 :(得分:4)

错误很明显:

  

视图app.views.function1没有返回HttpResponse对象。它   返回无。

在完成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 :(得分:1)

通常,当我有一个实用程序函数时,我将实用程序部分分解出来,以便多个视图可以引用相同的实用程序函数,而无需担心请求对象/上下文。

但更具体地说,你的第一个函数(function1)没有返回一个HttpResponse对象(正如错误描述的那样)。

你有两条路可走:

  1. 让func2返回一个HttpResponse对象(并将请求参数传递给它),然后让func1返回func2返回的内容(一个HttpResponse对象)。

  2. 让func2返回你想要的任何内容,让func1返回一个HTTPResponse对象。

  3. 在任何一种情况下,func1都必须返回一个HttpResponse对象。

    然而,就像我上面所说的那样,如果func 1和func 2都是带有url和所有爵士乐的有效视图,我会将func2中想要的任何内容完全分解为另一个函数并同时具有func1和func2参考(一般而言)。