如何在装饰器中获取调用装饰器的视图的url?

时间:2014-07-19 07:09:26

标签: python django django-views

在django应用程序中,我有一个名为my_dec的装饰器,我想使用在装饰器中调用装饰器的视图的url,例如,如果视图代码是这样的:

@my_dec(key)
def my_view
   pass

我想要这样的事情:

def my_dec(key)
   print #url of "my_view"

如何访问调用装饰器的url of my_view或任何其他视图?

1 个答案:

答案 0 :(得分:2)

假设您正在使用基于功能的视图。 在装饰器中,您可以访问功能视图的请求对象。 这是一个示例代码

def my_dec(func):
    def wrapped(request):
        print request.path_info
        return func(request)
    return wrapped

然后你可以在这样的视图上使用这个装饰器:

@my_dec
def my_view(request):
    return HttpResponse(...)

此示例只打印出与您的视图关联的网址。 请注意,在您的视图中,您可以访问整个请求对象,并可以删除所需的任何信息。

此示例适用于基于函数的视图,但也可以轻松修改以处理基于类的视图

相关问题