CSC/ECE 517 Fall 2014/ch1a a7 ch

From Expertiza_Wiki
Revision as of 01:14, 14 September 2014 by Cthinkel (talk | contribs) (→‎Examples)
Jump to navigation Jump to search

Web2py Framework

Web2py is a free open source full-stack framework for rapid development of fast, scalable, secure and portable database-driven web-based applications written in Python.[1]

Background

Web2py was originally introduced as a teaching tool to used to demonstrate ease of use and deployment. It was modeled after Ruby on Rails and Django, and as such focuses on rapid development and adheres to the Model View Controller architecture pattern.

Here are some of the features of Web2py[2][3]:

  • Web2py runs on Windows, Mac, Unix/Linux, Google App Engine, Amazon EC2, and almost any web hosting via Python 2.5/2.6/2.7/pypy, or Java with Jython.
  • Accessible anywhere, without any installation required
  • Open source licensed under the GNU LGPL v3.0 License
  • Support for mutiple databases including: SQLite, PostgreSQL, MySQL, MSSQL, FireBird, Oracle, IBM DB2, Informix, Ingres, and Google App Engine
  • Equipped with a Data Abstraction Layer that removes the requirement of knowing how to write SQL by doing it for you in real-time
  • Role-based authorization of resources
  • Error logging and ticketing system
  • An web-based administrative interface for ease of interaction

Examples

There are several websites currently powered by Web2py, including a website hosting the ever-popular game Minesweeper.

As previously mentioned, Web2py doesn't require that you install anything, you may access and demo the capabilities online through their demo administrative interface. At the time of this article's writing, the save demo is not fully-functional.

Code Examples

Hello World

Creating a web2py application can be as simple as writing a few lines in a single controller file (default.py):

def index(): return "Hello World"

File Upload[3]

In the Model:

db=DAL('sqlite://storage.db')
db.define_table('image', 
    Field('name', notnull=True),
    Field('file','upload'))

In the Controller:

def index():
    form = SQLFORM(db.image).process()
    if form.accepted:
        response.flash = 'image uploaded'
    return locals()

In the View:

{{extend 'layout.html'}}
<h1>Image upload form</h1>
{{=form}}

Narration

Architecture

Comparison to other Frameworks

Helpful Links

Web2py vs other frameworks

References

1. http://www.web2py.com/init/default/index
2. http://en.wikipedia.org/wiki/Web2py
3. http://www.web2py.com/init/default/what
4. http://wiki.expertiza.ncsu.edu/index.php/CSC/ECE_517_Fall_2013/oss_SocialMediaFeeds