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 に答える