Login

HTTP headers view decorator

Author:
dottedmag
Posted:
June 10, 2007
Language:
Python
Version:
.96
Score:
5 (after 5 ratings)

Decorator adding arbitrary HTTP headers to the response.

This decorator adds HTTP headers specified in the argument (map), to the HTTPResponse returned by the function being decorated.

Example:

@headers({'Refresh': '10', 'X-Bender': 'Bite my shiny, metal ass!'}) def index(request): ....

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
def headers(h):
    """Decorator adding arbitrary HTTP headers to the response.

    This decorator adds HTTP headers specified in the argument (map), to the
    HTTPResponse returned by the function being decorated.

    Example:

    @headers({'Refresh': '10', 'X-Bender': 'Bite my shiny, metal ass!'})
    def index(request):
        ....
    """
    def headers_wrapper(fun):
        def wrapped_function(*args, **kwargs):
            response = fun(*args, **kwargs)
            for k,v in h.iteritems():
                response[k] = v
            return response
        return wrapped_function
    return headers_wrapper

More like this

  1. Template tag - list punctuation for a list of items by shapiromatron 10 months, 3 weeks ago
  2. JSONRequestMiddleware adds a .json() method to your HttpRequests by cdcarter 11 months ago
  3. Serializer factory with Django Rest Framework by julio 1 year, 5 months ago
  4. Image compression before saving the new model / work with JPG, PNG by Schleidens 1 year, 6 months ago
  5. Help text hyperlinks by sa2812 1 year, 7 months ago

Comments

jacobian (on June 10, 2007):

Neat trick! You could make it a bit slicker by declaring headers as def headers(**h) and then munging underscores to dashes. That would let you do:

@headers(Refresh=10, X_Fry="It's like a party in my mouth and everyone's throwing up.")

#

Please login first before commenting.