有人可以告诉我如何为我的观点编写一个像@redirect_to_home
这样的登录装饰器,这样它就可以将request.PATH
变量修改为新的值/
,只要它应用于一个观点。
我看到人们对装饰师做了很复杂的事情:我还没有彻底搞清楚。
谢谢
答案 0 :(得分:3)
最好的方法是从django项目(auth模块)了解登录装饰器: http://code.djangoproject.com/browser/django/trunk/django/contrib/auth/decorators.py#L33
如果查看“user_passes_test”函数,您将看到如何访问请求对象。
关于装饰器的好教程:http://www.ibm.com/developerworks/linux/library/l-cpdecor.html 有关有用装饰器的一些示例,请参阅:http://wiki.python.org/moin/PythonDecoratorLibrary
答案 1 :(得分:1)
感谢Piotr的有用例子。
def fake_requested_from_root(fn):
"""
Login decorator which when used on a view modifies the reqquest.path
to fool the template into thibking that the request is coming from the
root page
"""
def decorator(request, **kwargs):
request.path = reverse('home')
return fn(request, **kwargs)
return decorator