1

我在教程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。关于如何解决这个问题有什么想法吗?谢谢。(子应用程序不是我的选择。)

4

2 回答 2

0

在 0.3 ( http://webpy.org/docs/0.3/ )中添加了一些应用程序模块

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

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

于 2014-10-27T16:17:42.060 回答
0

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

更新Django 样式的多个应用程序示例:

  1. 保持wiki.py, 和blog.py如示例中所指定
  2. 不要打扰delegate.py黑客:不再需要它。
  3. 更改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()    
    

关键变化是run.py. 如果第二项是字符串("index"在上面的示例中),那么 web.py 期望它是一个类来处理匹配的 url("/(.*)"在示例中)。这是 webpy 通常的工作方式。

但是,如果第二个项目是类型application( blog.app_blog,例如),那么匹配的 url ( /blog) 不是正则表达式,它是一个前缀 & 所有匹配该前缀的传入请求都被交给相关的application(并且前缀从传入的要求)。

于 2016-11-18T18:17:10.087 回答