1

必要なのは、1 つ以上のビュー内で関数 (コールバック関数) を自動的に呼び出し、その結果を取得してテンプレートに渡すことです。

簡単な例を次に示します。

ユーティリティ.py:

def getSContent():  
    return 'some dynamic data'

ビュー.py:

def myFirstView(request):
    ...py code...

    sData = getSContent() <== this line
    return render_to_response('template.html',
                               {'sData': sData, <== this line 
                               ...
                               },
                               contenxt_instance = RequestContext(request))

def mySecondView(request):
    ...py code...

    sData = getSContent() <== this line
    return render_to_response('template.html',
                               {'sData': sData, <== this line 
                               ...
                               },
                               contenxt_instance = RequestContext(request))

..等々。

sData = getSContent(){'sData': sData}これらすべてのビュー関数内で繰り返されます。

  • これに対するショートカットはありますか?
  • この関数 (マークされた行) を常に指定しなくても、この関数をアプリの特定のビューにバインドできますか?
  • デコレータはこの仕事をすることができますか?

関数の戻り値をキャッチして、さらにテンプレートに渡す必要があることに注意してください。

4

1 に答える 1

5

これにはTEMPLATE_CONTEXT_PROCESSORS設定を使用できます

呼び出し可能オブジェクト(関数)のリストです。各関数はrequest引数として受け取り、あなたの場合は、を返す必要がありdictます-return {'sData': getSContent()}

于 2012-10-26T11:17:08.980 に答える