Go to file
Dustin C. Hatch cf94a4d600 app: Fixed an issue with unicode responses in Python 2.7
If a controller callable returns a string, it needs to be wrapped in a
Response object. To determine if this is the case, the Application tests to
see if the returned object is an instance of `basestring`. Since `basestring`
doesn't exist in Python 3, only `str` is a valid return type.

Unfortunately, my way of testing whether the `basestring` type existed was
flawed. Instead of raising `NameError` when it doesn't exist,
`UnboundLocalError` (a subclass `NameError`) is *always* raised. Since the
exception handler sets `basestring` equal to `str` assuming this is Python 3,
most of the time this isn't a problem. If, however, the controller returns a
`unicode` object in Python 2, the `isinstance` call returns `False`, so the
response is not wrapped in a Response object.

Rather than try to reassign the `basestring` name, now we just use `_string`,
which will either be `basestring` (in Python 2) or `str` (in Python 3).

Apparently, the unit tests didn't cover this case...
2014-02-07 23:22:50 -06:00
.settings Started documentation 2011-03-13 16:48:16 -05:00
doc New documentation 2013-01-22 10:47:39 -06:00
src/milla app: Fixed an issue with unicode responses in Python 2.7 2014-02-07 23:22:50 -06:00
.hgignore Update .hgignore 2012-10-16 19:54:31 -05:00
.hgtags Added tag 0.2 for changeset 2d04d03ce334 2013-01-22 13:01:28 -06:00
.project Started the Milla project, a simple WSGI web framework 2011-03-13 16:46:42 -05:00
.pydevproject Bump PyDev interpreter and grammer for Python 3 2012-11-27 17:26:34 -06:00
COPYING Added licensing information and boilerplate messages 2011-04-05 23:47:44 -05:00
MANIFEST.in Added an icon and support for automatically serving favicon.ico 2011-03-27 15:24:41 -05:00
README Added README 2013-01-22 12:00:56 -06:00
distribute_setup.py Added setup.py 2011-03-13 16:48:35 -05:00
milla.svg Added an icon and support for automatically serving favicon.ico 2011-03-27 15:24:41 -05:00
setup.cfg Version bump 2013-01-22 13:02:17 -06:00
setup.py Version bump 2013-01-22 13:02:17 -06:00

README

.. vim: set ft=rst :

=====
Milla
=====

*Milla* is a simple and lightweight web framework for Python. It built on top
of `WebOb`_ and thus implements the `WSGI`_ standard. It aims to be easy to use
while imposing no restrictions, allowing web developers to write code the way
they want, using the tools, platform, and extensions they choose.

To get started using *Milla* right away, visit `Downloads`_ to get the latest
version, then read the `Documentation`_.

Example
=======

.. code:: python

    from wsgiref import simple_server
    from milla.dispatch import routing
    import milla


    def hello(request):
        return 'Hello, world!'

    router = routing.Router()
    router.add_route('/', hello)
    app = milla.Application(router)

    httpd = simple_server.make_server('', 8080, app)
    httpd.serve_forever()


.. _WebOb: http://webob.org/
.. _WSGI: http://wsgi.readthedocs.org/
.. _Downloads: https://bitbucket.org/AdmiralNemo/milla/downloads
.. _Documentation: http://milla.readthedocs.org/