flask_negotiation Package

flask_negotiation Package

content_negotiation

Provides better content-negotiation for flask.

class flask_negotiation.__init__.Render(renderers=(<flask_negotiation.renderers.TemplateRenderer object>, ))[source]

Bases: object

Dynamic function class renders content.

class flask_negotiation.__init__.MediaType(raw)[source]

Bases: object

Abstracted media type class.

quality
flask_negotiation.__init__.provides(media_type, *args, **kwargs)[source]

Decorator that recognizes acceptablility of view function. For example:

from flask.ext.negotiation.decorators import provides

@app.route('/json_only')
@provides('application/json')
def json_only():
    return json.dumps({'text':'JSON Mraz'})

And you can provide multiple types like this:

from flask.ext.negotiation.decorators import provides

@app.route('/json_and_html')
@provides('text/html', 'application/json')
def json_and_html():
    data = get_data()
    return render(data)

Or you can use renderer:

from flask.ext.negotiation.renderes import template_renderer
from flask.ext.negotiation.decorators import provides

@app.route('/json_and_html')
@provides(template_renderer, 'application/json')
def json_and_html():
    data = get_data()
    return render(data)

And you can handle choosen media type:

from flask.ext.negotiation.decorators import provides
@provides('application/json', 'text/html', to='provide_type')
def handle_type(provide_type):
    return str(provide_type)

to does not guarantee same media type with render function.

decorators Module

decorators — Decorators for Flask views

flask_negotiation.decorators.provides(media_type, *args, **kwargs)[source]

Decorator that recognizes acceptablility of view function. For example:

from flask.ext.negotiation.decorators import provides

@app.route('/json_only')
@provides('application/json')
def json_only():
    return json.dumps({'text':'JSON Mraz'})

And you can provide multiple types like this:

from flask.ext.negotiation.decorators import provides

@app.route('/json_and_html')
@provides('text/html', 'application/json')
def json_and_html():
    data = get_data()
    return render(data)

Or you can use renderer:

from flask.ext.negotiation.renderes import template_renderer
from flask.ext.negotiation.decorators import provides

@app.route('/json_and_html')
@provides(template_renderer, 'application/json')
def json_and_html():
    data = get_data()
    return render(data)

And you can handle choosen media type:

from flask.ext.negotiation.decorators import provides
@provides('application/json', 'text/html', to='provide_type')
def handle_type(provide_type):
    return str(provide_type)

to does not guarantee same media type with render function.

media_type Module

media_type

HTTP media type

class flask_negotiation.media_type.MediaType(raw)[source]

Bases: object

Abstracted media type class.

quality
flask_negotiation.media_type.acceptable_media_types(request)[source]

Extract acceptable media types from request

flask_negotiation.media_type.best_renderer(renderers, media_types)[source]

Choose best renderer and media type

flask_negotiation.media_type.can_accept(acceptables, media_types)[source]

Determines acceptablility. :param acceptables: list of media type acceptable :param media_types: list of media type supported

flask_negotiation.media_type.choose_media_type(acceptables, media_types)[source]

Choose best acceptable media type. :param acceptables: list of media type acceptable :param media_types: list of media type supported

Returns:best acceptable media type or None if cannot handle.
flask_negotiation.media_type.parse_header(s)[source]

Parses parameter header

renderers Module

content_negotiation.renderers

Renderers

class flask_negotiation.renderers.FunctionRenderer(fn, media_types)[source]

Bases: flask_negotiation.renderers.Renderer

Renders object with a function.

render(data, template=None, ctx=None)[source]
class flask_negotiation.renderers.JSONRenderer(encoder=<json.encoder.JSONEncoder object>)[source]

Bases: flask_negotiation.renderers.Renderer

Renders object to json with JSONEncoder.

render(data, template=None, ctx=None)[source]
class flask_negotiation.renderers.Renderer[source]

Bases: object

Base renderer class.

can_render(media_type)[source]

Determines that renderer can render media_type.

choose_media_type(media_type)[source]

Chooses media type that will be rendered.

media_types

Collections of abstracted media-types.

render(data, template=None, ctx=None)[source]

Renders data.

You must implement it

class flask_negotiation.renderers.TemplateRenderer(ext='html')[source]

Bases: flask_negotiation.renderers.Renderer

Renders object to HTML response.

render(data, template=None, ctx=None)[source]
flask_negotiation.renderers.renderer(*media_types)[source]

Decorator that creates simple renderer with function.

test_negotiation Module