Django呈现到来自函数的响应不起作用

2024-09-29 02:16:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样的看法:

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

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

^{pr2}$

但是它总是期望函数返回,但是我希望函数只在某些时候返回。我可以在视图中使用一些逻辑是否返回,但是我问是否可以在视图中执行所有操作,这样我就可以简单地调用函数了?在


Tags: 函数视图returnrequestdefnotfunctionsome
1条回答
网友
1楼 · 发布于 2024-09-29 02:16:03

您可以从函数呈现响应,但您需要的是return 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()返回一个有效的响应。在

相关问题 更多 >