par Benoît Bryon - www.marmelune.net
PyCon FR - Pau - Octobre 2015
grâce à decorum
https://www.python.org/dev/peps/pep-0318/
@some_decorator
def some_function():
"""Do something."""
def some_function():
"""Do something."""
some_function = some_decorator(some_function)
Est équivalent à :
def user_passes_test(test_func, login_url=None):
def decorator(view_func):
@wraps(view_func, assigned=available_attrs(view_func))
def _wrapped_view(request, *args, **kwargs):
if test_func(request.user):
return view_func(request, *args, **kwargs)
# Many lines...
return redirect_to_login(...)
return _wrapped_view
return decorator
Littéralement : une fonction qui retourne une fonction*
qui retourne une fonction.
* Laquelle prend une fonction en argument.