Pylons

mimehelper – MIMEtypes helper

webhelpers.mimehelper

class webhelpers.mimehelper.MIMETypes(environ)

MIMETypes registration mapping

The MIMETypes object class provides a single point to hold onto all the registered mimetypes, and their association extensions. It’s used by the mimetypes function to determine the appropriate content type to return to a client.

classmethod add_alias(alias, mimetype)

Creates a MIMEType alias to a full mimetype

These aliases may not include /’s. Examples include html->text/html, xml->application/xml.

classmethod init()

Loads a default mapping of extensions and mimetypes

These are suitable for most web applications by default. Additional types can be added with the using the mimetypes module.

mimetype(content_type)

Check the PATH_INFO of the current request and clients HTTP Accept to attempt to use the appropriate mime-type

If a content-type is matched, the appropriate response content type is set as well.

This works best with URLs that end in extensions that differentiate content-type. Examples: http://example.com/example, http://example.com/example.xml, http://example.com/example.csv

Since browsers generally allow for any content-type, but should be sent HTML when possible, the html mimetype check should always come first, as shown in the example below.

Example:

# some code likely in environment.py
MIMETypes.init()
MIMETypes.add_alias('html', 'text/html')
MIMETypes.add_alias('xml', 'application/xml')
MIMETypes.add_alias('csv', 'text/csv')

# code in a controller
def somaction(self):
    # prepare a bunch of data
    # ......
    
    # prepare MIMETypes object
    m = MIMETypes(request.environ)
    
    if m.mimetype('html'):
        return render('/some/template.html')
    elif m.mimetype('atom'):
        return render('/some/xml_template.xml')
    elif m.mimetype('csv'):
        # write the data to a csv file
        return csvfile
    else:
        abort(404)

Powered by Pylons - Contact Administrators