Introduction
web2py is a free, open-source web framework for the agile development of secure database-driven web applications; it is written in Python and programmable in Python. web2py is a full-stack framework, meaning that it contains all the components you need to build fully functional web applications. web2py is designed to guide a web developer to follow good software engineering practices, such as using the Model View Controller (MVC) pattern. web2py separates the data representation (the model) from the data presentation (the view) and also from the application logic and workflow (the controller). web2py provides libraries to help the developer design, implement, and test each of these three parts separately and makes them work together. web2py is built for security. This means that it automatically addresses many of the issues that can lead to security vulnerabilities, by following well-established practices. For example, it validates all input (to prevent injections), escapes all output (to prevent cross-site scripting), and renames uploaded files (to prevent directory traversal attacks). web2py takes care of main security issues, so developers have fewer chances of introducing vulnerabilities. web2py includes a Database Abstraction Layer (DAL) that writes SQL dynamically so that you, the developer, don’t have to. The DAL knows how to generate SQL transparently for SQLite, MySQL, PostgreSQL, MSSQL, FireBird, Oracle, IBM DB2, Informix, Ingres, and MongoDB. The DAL can also generate function calls for the Google Datastore when running on the Google App Engine (GAE). Experimentally we support more databases and new ones are constantly added. Please check the web2py website and mailing list for more recent adapters. Once one or more database tables are defined, web2py automatically generates a fully functional web based database administration interface to access the database and the tables. web2py differs from other web frameworks in that it is the only framework to fully embrace the Web 2.0 paradigm, where the web is the computer. In fact, web2py does not require installation or configuration; it runs on any architecture that can run Python (Windows, Windows CE, Mac OS X, iOS, and Unix/Linux), and the development, deployment, and maintenance phases for the applications can be done via a local or remote web interface. web2py runs with CPython (the C implementation) and PyPy (Python written in Python), on Python versions 2.5, 2.6, and 2.7. web2py provides a ticketing system for error events. If an error occurs, a ticket is issued to the user, and the error is logged for the administrator. web2py is open source and released under the LGPL version 3 license.