[Subversion] / WebHaiku / README.txt  

Diff of /WebHaiku/README.txt

Parent Directory | Revision Log

version 2261, Sun Jan 14 06:00:18 2007 UTC version 2275, Tue Jan 23 02:10:46 2007 UTC
Line 0 
Line 1 
   
   
   
       >>> from web_haiku import Page, test, HTML
       >>> class HelloPage(Page):
       ...     body = HTML("<h1>Hello, world!</h1>")
   
       >>> test(HelloPage)
       HTTP/1.0 200 OK
       Date: ...
       Content-Type: text/html
       ...
       <h1>Hello, world!</h1>
   
   
       >>> test(HelloPage, PATH_INFO="/x")
       HTTP/1.0 404 Not Found
       Date: ...
       Content-Type: text/plain
       ...
       404 not found
       You deserve a kinder note
       Than this web haiku!
       ...
   
       >>> test(HelloPage, form={"a":"b"})
       HTTP/1.0 405 Method not allowed
       Date: ...
       Content-Type: text/plain
       Allow: HEAD, GET
       ...
       Excellent method!
       Alas, my response must be:
       "I cannot comply."
   
       >>> test(HelloPage, REQUEST_METHOD="HEAD")
       HTTP/1.0 200 OK
       Date: ...
       Content-Type: text/html
       Content-Length: 22
       <BLANKLINE>
       <BLANKLINE>
   
       >>> from web_haiku import Text, form_handler
       >>> class TestForm(Page):
       ...     """A stupid example to test the framework"""
       ...
       ...     form_defaults = dict(name='Joey', animal='Dog', email='joe@dog.com')
       ...
       ...     body = form_failure = HTML("""<?xml version="1.0" encoding="iso-8859-1"?>
       ... <!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">
       ... <head><title>What is your favorite animal ?</title></head>
       ... <body>
       ...  $show_errors
       ...  <form method="post">
       ...   <table>
       ...    <tr><td>What is your name ?</td>
       ...        <td><input type="text" name="name" value="$(?escape(name)?)"/></td></tr>
       ...    <tr><td>What is your favorite animal ?</td>
       ...        <td><input type="text" name="animal" value="$(?escape(animal)?)"/></td></tr>
       ...    <tr><td>What is your email address ?</td>
       ...        <td><input type="text" name="email" value="$(?escape(email)?)"/></td></tr>
       ...    <tr><td colspan="2"><input type="submit" /></td></tr>
       ...   </table>
       ...  </form>
       ... </body>
       ... </html>""")
       ...     form_success = Text("Hey Joe!")
       ...
       ...     @form_handler
       ...     def check_joe(self):
       ...         if self.name!='Joe': self.errors.append("Hey, you're not Joe!")
       ...
       ...     errors_found = HTML.fragment(
       ...         "<p>Please correct the following problems:</p>\n"
       ...         '<ul class="form_errors"><li class="form_error">'
       ...         r'$(? "</li>\n<li class=\"form_error\">".join(errors) ?)'
       ...         '</li></ul>'
       ...     )
   
       >>> class Folder(Page):
       ...     hello = HelloPage
       ...     form = TestForm
   
       >>> test(Folder, PATH_INFO="/hello")
       HTTP/1.0 200 OK
       Date: ...
       Content-Type: text/html
       ...
       <h1>Hello, world!</h1>
   
       >>> test(Folder, PATH_INFO="/hello/")
       HTTP/1.0 302 Found
       Date: ...
       Content-Type: text/html
       Location: http://127.0.0.1/hello
       ...
       ...<meta http-equiv="refresh" content="0;url=http://127.0.0.1/hello" />...
   
       >>> test(Folder, PATH_INFO="/form")
       HTTP/1.0 200 OK
       ...
       Content-Type: text/html
       ...
       ...What is your favorite animal ?...
       ...<input type="text" name="name" value="Joey"/>...
       ...
   
       >>> test(Folder, form=dict(name="Me", email="blah"), PATH_INFO="/form")
       HTTP/1.0 200 OK
       ...
        <p>Please correct the following problems:</p>
       <ul class="form_errors"><li class="form_error">Hey, you're not Joe!</li></ul>
       ...<input type="text" name="name" value="Me"/>...
   


Generate output suitable for use with a patch program
Legend:
Removed from v.2261  
changed lines
  Added in v.2275

cvs-admin@eby-sarna.com

Powered by ViewCVS 1.0-dev

ViewCVS and CVS Help