http://webpy.org/static/webpy.gif WebPy ~ 超轻量WSGI 应用框架

::-- ZoomQuiet [2008-02-24 06:19:46]

CPUG联盟::

CPUG::门户plone

BPUG

SPUG

ZPUG

SpreadPython Python宣传

web.py 0.3 的食谱格式文档.

1. web.py 食谱

1.1. Hello World!

命题

怎么使用web.py 写个hello world?

解决

   1 import web
   2 
   3 urls = ("/.*", "hello")
   4 app = web.application(urls, globals())
   5 
   6 class hello:
   7     def GET(self):
   8         return 'Hello, world!'
   9 
  10 if __name__ == "__main__":
  11     app.run()

1.2. 客户对话~Sessions

命题
  • 如果在web.py 中运用 客户对话?
解决
  • web.session模块专门进行了支持,以下实例

  •    1 import web
       2 urls = (
       3     "/count", "count",
       4     "/reset", "reset"
       5 )
       6 app = web.application(urls, locals())
       7 session = web.session.Session(app, web.session.DiskStore('sessions'), initializer={'count': 0})
       8 
       9 class count:
      10     def GET(self):
      11         session.count += 1
      12         return str(session.count)
      13 
      14 class reset:
      15     def GET(self):
      16         session.kill()
      17         return ""
      18 
      19 if __name__ == "__main__":
      20     app.run()
    

    1.3. 邮件

    命题
    • 如何通过 web.py 操作邮件?
    解决
    • web.sendmail函式用以发送邮件

    web.sendmail('[email protected]', '[email protected]', 'subject', 'message')

    web.config.smtp_server = 'mail.mydomain.com'

    web.sendmail('[email protected]'
        , ['[email protected]', '[email protected]']
        , 'subject', 'message')

    web.sendmail('[email protected]', 
        '[email protected]', 'subject', 'message', 
        cc='[email protected]', 
        bcc='[email protected]')

    1.4. 网站排版模板

       1 app = web.application(urls, gloabals)
       2 render = web.template.render('templates/')
       3 
       4 def layout_processor(handle):
       5     result = handle()
       6     return render.layout(result)
       7 
       8 app.add_processor(layout_processor)
    

    1.5. 文件上传

    命题
    • 即使你对表单上传或是CGI生成不熟悉,文件上传也可以轻易支持的
    解决

    import web
    
    urls = ('/upload', 'Upload')
    
    class Upload:
        def GET(self):
            return """<html><head></head><body>
    <form method="POST" enctype="multipart/form-data" action="">
    <input type="file" name="myfile" />
    <br/>
    <input type="submit" />
    </form>
    </body></html>"""
    
        def POST(self):
            x = web.input(myfile={})
            web.debug(x['myfile'].value) # This is the file contents
            web.debug(x['myfile'].filename) # This is the filename
            web.redirect('/upload')
    
    
    app = web.application(urls, globals())
    
    if __name__ == "__main__":
        app.run()
    探讨
    • 有些事儿得注意:
    • 对应表单必须有enctype="multipart/form-data"聲明,否则不会起作用

    • 在 webpy 代码中, 如果将文件作为想导入CGIFieldStorage对象,默认值是必须的(myfile={}部分) .

    • 否则将被视作文本文件-- 此例中,你这无法知道文件命了.

    1.6. 预备命题

    1.7. 反馈

    WebPyCookBook (last edited 2009-12-25 07:15:23 by localhost)