在django应用程序中,我有一个名为my_dec
的装饰器,我想使用在装饰器中调用装饰器的视图的url,例如,如果视图代码是这样的:
@my_dec(key)
def my_view
pass
我想要这样的事情:
def my_dec(key)
print #url of "my_view"
如何访问调用装饰器的url of my_view
或任何其他视图?
答案 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(...)
此示例只打印出与您的视图关联的网址。 请注意,在您的视图中,您可以访问整个请求对象,并可以删除所需的任何信息。
此示例适用于基于函数的视图,但也可以轻松修改以处理基于类的视图