HTTP headers view decorator

 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. Other approach of making middleware (by decorators) by diverman 2 years, 3 months ago
  2. @url decorator - getting rid of urlpatterns by southern_sun 5 years, 9 months ago
  3. Run and cache only one instance of a heavy request by farnsworth 2 years, 10 months ago
  4. JSON decorator for views handling ajax requests by anilshanbhag 5 months, 4 weeks ago
  5. Decorator that limits request methods by schinckel 3 years, 11 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.")

#

(Forgotten your password?)