Django风格多个应用程序与web.py无法正常工作

时间:2013-06-09 08:34:38

标签: web.py

我在教程Django style multiple apps with web.py中运行示例,但它不起作用。以下是错误消息:

Traceback (most recent call last):
  File "run.py", line 11, in <module>
    delegate.run(mapping)
  File "/home/siongui/dev/test/delegate.py", line 31, in run
    web.run(handler, {})
AttributeError: 'module' object has no attribute 'run'

我的web.py版本是0.37。有什么想法如何解决这个问题?谢谢。 (subapp不是我的选择。)

2 个答案:

答案 0 :(得分:0)

应用程序模块在0.3(http://webpy.org/docs/0.3/

中有一些补充
  

应用程序。如何将URL映射到python代码路径    - 基本应用程序。将正则表达式映射到类。
   - 自动应用。让webpy根据班级名称跟踪网址    - Subdir应用程序。根据子目录托管多个应用程序    - 子域名应用。根据子域托管多个应用。

遵循这本食谱可以让事情发挥作用 http://webpy.org/cookbook/subapp

答案 1 :(得分:0)

它比webpy.org提供的示例更容易。

更新Django style multiple apps示例:

  1. 按示例
  2. 中的说明保留wiki.pyblog.py
  3. 不要为delegate.py黑客而烦恼:不再需要它了。
  4. run.py更改为:

    """run.py"""
    import web
    import wiki
    import blog
    
    urls = ("/blog", blog.app_blog,
            "/wiki", wiki.app_wiki,
            "/(.*)", "index")
    
    class index:
        def GET(self, path):
            return "other: " + path
    
    app = web.application(urls, locals())
    
    if __name__ == "__main__":
        app.run()    
    
  5. 密钥更改是run.py中指定的网址。如果第二个项是字符串(在上面的示例中为"index"),那么web.py希望它是一个类来处理匹配的URL(示例中为"/(.*)")。这是webpy正常工作的方式。

    但是,如果第二项是application类型(例如blog.app_blog),则匹配的网址(/blog)不是正则表达式,它是&#39; sa前缀&amp;匹配该前缀的所有传入请求都将传递给相关的application(并且前缀将从传入请求中删除)。