django中的登录\所需装饰程序
在url.py和views.py中使用login_required decorator有什么区别吗? 如果我这样说:django中的登录\所需装饰程序,django,Django,在url.py和views.py中使用login_required decorator有什么区别吗? 如果我这样说: url(r'^add/$', login_required(views.add_media), name = 'add_media_action') 在URL.py中,我将实现与在views.py中装饰add_media函数相同的效果: @login_required def add_media(request): ... 在Python中,decorator是一个函
url(r'^add/$', login_required(views.add_media), name = 'add_media_action')
在URL.py中,我将实现与在views.py中装饰add_media函数相同的效果:
@login_required
def add_media(request):
...
在Python中,decorator是一个函数,它将函数作为参数,并返回一个修饰函数。所需的
@login_
语法可以翻译为:
def add_media(request):
...
add_media = login_required(add_media)
因此,如果您手动应用装饰器(如第一个代码片段中所示),它应该会产生相同的效果
如果您希望同时使用视图的装饰版本和未装饰版本,则第一个代码段中的方法非常有用。是的,它们是相同的。修饰符是将一个函数包装到另一个函数中的语法糖。因此,在这两种情况下,您都将
login\u required
包装在视图周围。添加媒体
正如其他人所指出的,它们确实是等效的。如果你想采用这种方法,需要考虑另外两件事: