django - 渲染到函数的响应 - 不工作

时间:2012-11-10 11:29:36

标签: python django

我有这样的观点:

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

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

1 个答案:

答案 0 :(得分: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()返回有效回复。