As an example:
def get_booking(f=None):
print "Calling get_booking Decorator"
def wrapper(request, **kwargs):
booking = _get_booking
I believe python decorators are just syntactic sugar.
@foo
def bar ():
pass
is the same thing as
def bar ():
pass
bar = foo(bar)
As you can see, foo is being called even though bar has not been called. This is why you see the output from your decorator function. Your output should contain a single line for every function you applied your decorator to.