7
TurboGears A python-based web Megaframework

TurboGears A python-based web Megaframework. What does it do? Write web applications faster. Achieves this by allowing the user to write applications

Embed Size (px)

Citation preview

Page 1: TurboGears A python-based web Megaframework. What does it do?  Write web applications faster. Achieves this by allowing the user to write applications

TurboGears

A python-based web Megaframework

Page 2: TurboGears A python-based web Megaframework. What does it do?  Write web applications faster. Achieves this by allowing the user to write applications

What does it do?

Write web applications faster.

Achieves this by allowing the user to write applications in a high-level interpreted programming

language while conforming to the Model-View-Controller

architecture.

Page 3: TurboGears A python-based web Megaframework. What does it do?  Write web applications faster. Achieves this by allowing the user to write applications

What does it use? Kid CherryPy SQLObject MochiKit

Page 4: TurboGears A python-based web Megaframework. What does it do?  Write web applications faster. Achieves this by allowing the user to write applications

Code Examples

:Model:

# Pretend all the import statements are here.

# Next two lines are generated in every project.hub = PackageHub("newwiki")__connection__ = hub

# SQL equivalent to defining a table Page with the columns# “Pagename” with a length of 30 and “data” with no max length# set. AlternateID=True ensures uniqueness with pagename.class Page(SQLObject): pagename=StringCol(alternateID=True, length=30) data=StringCol()

Page 5: TurboGears A python-based web Megaframework. What does it do?  Write web applications faster. Achieves this by allowing the user to write applications

Code Examples, continued

:Controller:# Pretend there are import statements here, too.wikiwords=re.compile(r"\b([A-Z]\w+[A-Z]+\w+)")#Detects words LikeThis or TurboGears.

class Root(controllers.RootController): @turbogears.expose(html=".templates.page") #Tells TG to use the page template def default(self, pagename): #for root requests along with the return self.index(pagename) #variable pagename @turbogears.expose(html=".templates.edit") #The edit method uses the edit def edit(self, pagename): #template page = Page.byPagename(pagename) #Finds the pagename in the database return dict(pagename=page.pagename, data=page.data, new=False)

Page 6: TurboGears A python-based web Megaframework. What does it do?  Write web applications faster. Achieves this by allowing the user to write applications

Code Examples, continued

:View:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#" py:extends="'master.kid'"><head><meta content="text/html; charset=UTF-8" http-equiv="content-type" py:replace="''"/> <title>Welcome to TurboGears</title></head><body> <div style="float:right; width: 10em"> Viewing <span py:replace="pagename">You will never see this.</span> <br/> You can return to the <a href="/">FrontPage</a>. </div> <form action="save" method="post"> <input type="hidden" name="new" value="${new}" /> <input type="hidden" name="pagename" py:attrs="value=pagename"/> <textarea name="data" py:content="data" rows="10" cols="60"/> <input type="submit" name="submit" value="Save"/> </form> <!--Yes, this is just XHTML with embedded python variables-->

Page 7: TurboGears A python-based web Megaframework. What does it do?  Write web applications faster. Achieves this by allowing the user to write applications

Other included components

TurboGears toolbox

A web application that:-Includes a frontend to the SQLobject database-A visual model diagram generator-An widget browser-Shows version information to all included parts-A python web-console