WPS - yourstory so far
– xhtml x2
– css
– javascript
– dom, dynamic html
– java applets
– cgi/perl
– php x2
– web usability x2
– xml x2
• Seems incredible
complicated, already
• But still not everything
(by far not!)
• How to possibly get it
all under one hood?
• What did you like?
3.
Course of thislecture
• What is web programming?
• What is model-view-controller?
• Introducing TurboGears
4.
1. Web programming
•The non-design bits
• Developing web applications of all scales
• “In software engineering, a Web application or webapp is an
application that is accessed with a Web browser over a network
such as the Internet or an intranet. Web applications are popular
due to the ubiquity of the browser as a client, sometimes called a
thin client. The ability to update and maintain Web applications
without distributing and installing software on potentially thousands
of client computers is a key reason for their popularity. Web
applications are used to implement Webmail, online retail sales,
online auctions, wikis, discussion boards, Weblogs, MMORPGs,
and many other functions.” – Wikipedia.org
5.
Webapps summary
• Accessedwith a Web Browser (client)
• Over a network
• Code is mainly run on server
• Exception: Javascript (also: Java, Flash,..)
• Code is loaded from server
• Data is mainly stored on server
• Webapps can be updated easily…
..without updating the clients!
6.
General 3 tieredstructure
• First tier: client side code (web-browser),
e.g. (X)HTML, Javascript, Java, Flash
• Second tier: server side code, e.g. C/C++,
Perl, PHP, Java, Ruby, Python
• Third tier: server side database
7.
• Architectural Patternfrom Smalltalk (1979)
• Decouples data and presentation
• Eases the development
2. Model View Controller
8.
• First thought(ok, but not far enough):
– Tier 1: View (Client)
– Tier 2: Controller (Server)
– Tier 3: Model (Database)
Database
Client
Server
9.
• Presentation:
– Viewis the user interface (e.g. button)
– Controller is the code (e.g. callback for button)
• Data:
– Model is the database
Database
Presentation
Data
10.
Example Control Flowin MVC
• User interacts with the VIEW UI
• CONTROLLER handles the user input
(often a callback function attached to UI
elements)
• CONTROLLER updates the MODEL
• VIEW uses MODEL to generate new UI
• UI waits for user interaction
3. Introduction toTurboGears
JavaScript Library
XHTML template engine
Easy to use Python webserver
ORM Database Interface
(e.g. for MySQL, SQLite, etc.)
VIEW
CONTROLLER
MODEL
13.
> tg-admin quickstartNewDemo
Enter package name [newdemo]:
Do you need Identity
(usernames/passwords) in this project?
[no]
[lots of output]
> cd NewDemo
> ./start-newdemo.py
3. Introduction to TurboGears
So what wasthat?
• Created skeleton files with startup script
• Defined Data-Model
– created database tables from model
– created seeding data in toolbox webapp
• Wrote View template in XHTML
• Wrote Controller code in Python
– Index, edit, save
• At this point he had a working system
– Several iterations to add all features
• Finally wrote AJAX code (Javascript) in template
17.
Benefits
• Local development
–No need to upload to server
• Quick turn around times
– No need to compile
– As CherryPy watches the file-system and
reloads when sources are changed
• Database query and update was easy
– No need to hand-write SQL
– But could be done, if necessary
18.
Summary
• Web applications
–Client, Server, Database
– Easy to maintain, harder to write
• Model – View – Controller
– Eases web application development
• TurboGears
– MVC WebApp Framework written in Python
– www.turbogears.org
19.
Thanks for yourattention
• Next lecture: 1 PM today
• More on TurboGears (example project)
– Movie Collection tool
• Questions / Comments:
– Now
– or email: LXO@CS.NOTT.AC.UK
Editor's Notes
#13 TurboGears gives you the “tg-admin quickstart” command to get you going right away. The project created by that command embodies what we know about the best practices when using TurboGears. It comes with a ready-to-run script that will start up a web server so that you can begin right away. There’s nothing quite like the feeling of getting off to a running start. David Heinemeier Hansson really put the spotlight on this with Ruby on Rails, and I think all of the web frameworks are benefitting from the idea.