dayClick
如果访问/路径,我想列出所有可用的网址。任何自动方法?
答案 0 :(得分:1)
web.py使用偶数元素来描述路径,使用奇数元素来提供url处理程序。这就是为什么它通常写成:
urls = ('foo', 'foo',
'bar', 'bar',
'/', index)
所以,诀窍就是打印出偶数元素:
>>> [urls[i] for i in xrange(0, len(urls), 2)]
['foo', 'bar', '/']
现在,有一些并发症。
webpy
传递了前缀为(例如)/app
的内容。所以"真实"网址应为/app/foo
,' / app / bar`等。您无法通过自己的应用程序判断。dashboard/(mail|settings|status)
会允许三个网址:dashboard/mail
,dashboard/settings
和dashboard/status
web.application
,您可以在其中为其所有网址递归到该应用程序中。例如:
import web
def p(app, prefix=None):
mapping = app.mapping
for pattern, what in mapping:
if isinstance(what, basestring):
print "{}{}".format(prefix + '/' if prefix else '', pattern)
else:
p(what, prefix=pattern)
if __name__ == '__main__':
# "blog" sub-application which handles blog-related urls
blog_urls = ('create', 'blog.Create', 'edit', 'blog.Edit', 'delete', 'blog.Delete')
blog_app = web.application(blog_urls, globals())
# "main" application which handles most urls, but passed blog URL to sub-application
main_urls = ('/account', 'account', '/settings', 'settings', '/blog', blog_app)
main_app = web.application(main_urls, globals())
p(main_app)
运行:
$ python foo.py
/account
/settings
/blog/create
/blog/edit
/blog/delete