DJANGO回调函数内部视图

Tra*_*ian 1 python django callback decorator

我需要的是在一个或多个视图中自动调用函数(回调函数),获取其结果并将其传递给模板.

这是一个简化的例子:

utils.py:

def getSContent():  
    return 'some dynamic data'
Run Code Online (Sandbox Code Playgroud)

views.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))
Run Code Online (Sandbox Code Playgroud)

..等等.

sData = getSContent(){'sData': sData}在所有这些视图函数中重复.

  • 这有什么捷径吗?
  • 我可以以某种方式将此功能绑定到我的应用程序的特定视图,而无需一直指定它(标记的行)吗?
  • 装饰师可以做这个工作吗?

请记住,我需要捕获函数的返回值并将其进一步传递给模板.

Igo*_*gor 5

您可以使用TEMPLATE_CONTEXT_PROCESSORS设置

这是一个callables(函数)列表.每个函数request作为参数接收,并且应该返回a dict,在您的情况下 -return {'sData': getSContent()}