我在教程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不是我的选择。)
答案 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示例:
wiki.py
和blog.py
delegate.py
黑客而烦恼:不再需要它了。将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
),则匹配的网址(/blog
)不是正则表达式,它是&#39; sa前缀&amp;匹配该前缀的所有传入请求都将传递给相关的application
(并且前缀将从传入请求中删除)。