0

我有这样的看法:

  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))

在这里,如果我这样调用函数,该函数将呈现模板:

    return some_function()

但它总是希望函数返回,但我希望函数只在特定时间返回。我可以在视图中使用一些逻辑是否返回,但我要求可以在视图中执行所有操作,以便我可以简单地调用函数?

4

1 回答 1

2

您可以从函数呈现响应,但您需要的return some_function()并不some_function()孤单,在您的情况下 some_function() 确实执行,但返回值不会作为视图的返回值传递myview()

所以执行流程继续并到达return HttpResponse("This should not appear"),这就是您将在您的视图中得到的响应。

如果你有some_function()一个人(并且没有return),那么你的视图将返回没有响应(myview()作为一个什么都不返回的函数),并且 Django 会抱怨。

如果您在调用的函数上使用,您可以使用逻辑来控制流程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()返回一个有效的响应。

于 2012-11-10T11:46:00.060 回答