使用/(.+)时,我在web.py中出现404错误(新手Q)

时间:2013-03-01 14:42:25

标签: web.py

这是我的代码和我的问题。

import web

render = web.template.render('templates/')

urls = (
    '/(.+)', 'index'
)

class index:
        def GET(self, lang):
            return render.index(lang)

if __name__=="__main__":
    app = web.application(urls, globals())
    app.run()

我的index.html就是这个:

$def with (lang)


$if lang == 'en':
    I just wanted to say <em>hello</em>
$elif lang =='es' or lang == '':
    <em>Hola</em>, mundo!
$else:
    página no disponible en este idioma

问题是当我运行此代码时出现404错误。我认为问题可能是网址部分,特别是/(。+)。我想我没有正确使用它,我想让它工作,所以我可以使用多个参数。当我使用/(。*)它工作,但不是一个以上的参数,并且文档说,对于超过1个参数我必须使用+而不是*

事先谢谢。

1 个答案:

答案 0 :(得分:0)

你应该学习regexp,webpy只匹配路径并将匹配的组传递给控制器​​方法。您可以使用?将组标记为可选,因此如果它为空,则不会捕获它,并且默认情况下lang将设置为None。

regexp中的.表示任何符号,用于捕获您最好使用匹配任何单词字符的\w语言。

urls = (
    '/(\w+)?', 'index'
)

class index:
    def GET(self, lang=None):
        return render.index(lang)