<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.umiacs.umd.edu/hcil/index.php?action=history&amp;feed=atom&amp;title=Web.py</id>
	<title>Web.py - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.umiacs.umd.edu/hcil/index.php?action=history&amp;feed=atom&amp;title=Web.py"/>
	<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/hcil/index.php?title=Web.py&amp;action=history"/>
	<updated>2026-05-15T10:53:42Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.7</generator>
	<entry>
		<id>https://wiki.umiacs.umd.edu/hcil/index.php?title=Web.py&amp;diff=40&amp;oldid=prev</id>
		<title>Mgubbels: /* Options for running on HCIL machines */</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/hcil/index.php?title=Web.py&amp;diff=40&amp;oldid=prev"/>
		<updated>2013-06-07T20:21:25Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Options for running on HCIL machines&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 20:21, 7 June 2013&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l13&quot;&gt;Line 13:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 13:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;On our servers, you have 3 options for running Web.py code:  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;On our servers, you have 3 options for running Web.py code:  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;1. Plain CGI  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;1. Plain CGI&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The above example is running this way, as plain CGI. This is easiest for getting started but slower to execute (≈200 ms vs. ≈20 ms per query). This is probably fine if you&amp;#039;re just testing on your own. To get nice, clean URLs, you&amp;#039;ll need an .htaccess file. See the one in the demo for an example.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The above example is running this way, as plain CGI. This is easiest for getting started but slower to execute (≈200 ms vs. ≈20 ms per query). This is probably fine if you&amp;#039;re just testing on your own. To get nice, clean URLs, you&amp;#039;ll need an .htaccess file. See the one in the demo for an example.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l20&quot;&gt;Line 20:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 20:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;3. WSGI installed with Apache  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;3. WSGI installed with Apache  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Regular WSGI on port 80 requires some configuration by staff. You&#039;ll want this for production applications.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Regular WSGI on port 80 requires some configuration by staff. You&#039;ll want this for production applications.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Debugging =&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Debugging =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Mgubbels</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/hcil/index.php?title=Web.py&amp;diff=39&amp;oldid=prev</id>
		<title>Mgubbels: Created page with &quot;= Web.py demo code =  One of the [http://webpy.org/ Web.py] demos is set up on hcil2. &lt;br /&gt; http://hcil2.cs.umd.edu/aq/webpy/todo_demo/ &lt;br /&gt; /fs/hcil2/aq/webpy/todo_demo/ /...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/hcil/index.php?title=Web.py&amp;diff=39&amp;oldid=prev"/>
		<updated>2013-06-07T20:19:50Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;= Web.py demo code =  One of the [http://webpy.org/ Web.py] demos is set up on hcil2. &amp;lt;br /&amp;gt; http://hcil2.cs.umd.edu/aq/webpy/todo_demo/ &amp;lt;br /&amp;gt; /fs/hcil2/aq/webpy/todo_demo/ /...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Web.py demo code =&lt;br /&gt;
&lt;br /&gt;
One of the [http://webpy.org/ Web.py] demos is set up on hcil2. &amp;lt;br /&amp;gt;&lt;br /&gt;
http://hcil2.cs.umd.edu/aq/webpy/todo_demo/ &amp;lt;br /&amp;gt;&lt;br /&gt;
/fs/hcil2/aq/webpy/todo_demo/ /fs/hcil2/aq/webpy/todo_demo/&lt;br /&gt;
&lt;br /&gt;
This is a slight adaptation of [http://webpy.org/src/todo-list/0.3 this example] from the [http://webpy.org/docs/0.3/tutorial Web.py tutorial]. &lt;br /&gt;
&lt;br /&gt;
If you move the code to a different directory, you&amp;#039;ll need to change a path in the .htaccess and templates/index.html files. &lt;br /&gt;
&lt;br /&gt;
= Options for running on HCIL machines =&lt;br /&gt;
&lt;br /&gt;
On our servers, you have 3 options for running Web.py code: &lt;br /&gt;
&lt;br /&gt;
1. Plain CGI &lt;br /&gt;
The above example is running this way, as plain CGI. This is easiest for getting started but slower to execute (≈200 ms vs. ≈20 ms per query). This is probably fine if you&amp;#039;re just testing on your own. To get nice, clean URLs, you&amp;#039;ll need an .htaccess file. See the one in the demo for an example. &lt;br /&gt;
&lt;br /&gt;
2. WSGI built-in test server &lt;br /&gt;
This is much faster and still very simple. However, it is only good for testing since it runs on high ports and you must be logged in to use it. Just run your code (./todo.py) and point your browser to http://hcil2.cs.umd.edu:8080/. &lt;br /&gt;
&lt;br /&gt;
3. WSGI installed with Apache &lt;br /&gt;
Regular WSGI on port 80 requires some configuration by staff. You&amp;#039;ll want this for production applications. &lt;br /&gt;
&lt;br /&gt;
= Debugging =&lt;br /&gt;
&lt;br /&gt;
When debugging a Web.py application, you can put this line near the top of your file: &lt;br /&gt;
   web.config.debug = True &lt;br /&gt;
Be sure to turn it off when you&amp;#039;re done, since it might expose internal server details that could be useful to an attacker. &lt;br /&gt;
&lt;br /&gt;
To see the hcil2 log files, type: &lt;br /&gt;
   tail /var/apache/logs/error_log &lt;br /&gt;
   tail /var/apache/logs/access_log &lt;br /&gt;
&lt;br /&gt;
= About Web.py =&lt;br /&gt;
&lt;br /&gt;
The main advantages of Web.py are that it&amp;#039;s quick to learn and easy to set up, even on the HCIL servers where we don&amp;#039;t have root. The Web.py tutorial is short and covers quite a bit. &lt;br /&gt;
&lt;br /&gt;
Web.py is a minor player with regard to web frameworks—no competition to GAE, Web2py, Django, and such. If GAE works for what you&amp;#039;re doing, it&amp;#039;s may be your best bet. However, Web.py does have a nice core set of features: templating, sessions, DB integration, basic OpenID, etc. In particular, the templating language simplifies code dramatically. Also, the database module makes it easy to start with the built-in SQLite when you&amp;#039;re resing and then migrate to MySQL when you need to. Web.py has been actively developed and maintained since 2007.&lt;/div&gt;</summary>
		<author><name>Mgubbels</name></author>
	</entry>
</feed>