0

我有一个装饰器:

def site_login_required(function=None):
    def _dec(view_func):
        def _view(request, *args, **kwargs):
            gets site_id. checks stuff. if else.

这以正常方式调用:

@site_login_required
def frontPage(request, url_arg):  

装饰器找到一个site_id。在 frontPage 函数中提供此功能会很好。那可能吗?如果有怎么办?

4

1 回答 1

2

当您在装饰器中调用视图函数时,您可以将其作为 kwarg 传递:

def site_login_required(function=None):
    def _dec(view_func):
        def _view(request, *args, **kwargs):
            site_id = get_site_id()
            url_arg = get_a_url()
            view_func(request, url_arg, site_id=site_id)

@site_login_required
def frontPage(request, url_arg, site_id=None, *args, **kwargs):
    ...

*args附带说明一下,接受并在所有视图函数中很有用**kwargs,因此它们会消耗额外的参数,而不是像包裹在它们周围的装饰器那样窒息。

于 2012-10-18T16:16:32.987 回答