webhelpers.mimehelper
¶
MIME Type helpers
This helper depends on the WebOb package, and has optional Pylons support.
-
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 method to determine the appropriate content type to return to a client.
-
classmethod
add_alias
(alias, mimetype)¶ Create a MIMEType alias to a full mimetype.
Examples:
add_alias('html', 'text/html')
add_alias('xml', 'application/xml')
An
alias
may not contain the/
character.
-
aliases
= {}¶
-
classmethod
init
()¶ Loads a default mapping of extensions and mimetypes
These are suitable for most web applications by default. Additional types can be added by using the mimetypes module.
-
mimetype
(content_type)¶ Check the PATH_INFO of the current request and client’s HTTP Accept to attempt to use the appropriate mime-type.
If a content-type is matched, return the appropriate response content type, and if running under Pylons, set the response content type directly. If a content-type is not matched, return
False
.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 Pylons controller def someaction(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) # Code in a non-Pylons controller. m = MIMETypes(environ) response_type = m.mimetype('html') # ``response_type`` is a MIME type or ``False``.
-
classmethod