web.py中的超链接

kas*_*old 3 python web.py

点击链接后,如何让web.py获取页面?我在我的模板中有这个:

<a href='add.html'>Home</a>

当我点击'Home'时,我会'找不到'.

在我的应用程序中,我有'/ add'映射到'Add'类,它返回'Boom!' 使用模板add.html.

urls = ('/', 'Index',
    '/add','Add')

class Add(object):
    def GET(self):
        return render.add('Boom!')
Run Code Online (Sandbox Code Playgroud)

我觉得当我要求时/add.html,Add类将处理请求并返回'Boom!'

为什么我一直"找不到"?

mit*_*mit 8

以.html lilke /add.html结尾的页面URI的来源是在静态托管环境中,那些传统上实际上是具有html内容的单个文本文件,并且以这样的文件结尾的文件是.html

但您的系统是动态的,可以动态创建网页.它不一定需要以.html结尾的页面.虽然如果你愿意,你可以模仿传统的行为.

但是在现代和动态系统中,通常优选单个"页面"上没有结尾.

因此,您可以像Ignacio所建议的那样,摆脱.html并请求/add页面,该页面是该资源的有效且足够的唯一标识符.

如果你想保持.html结尾.你必须在路线中添加它.

urls = (
  '/', 'Index',
  '/add.html','Add',
)
Run Code Online (Sandbox Code Playgroud)

您还可以有多个指向同一资源的路由,以便/ add和/add.html都有效并显示相同的内容,但内容复制还有其他缺点:

urls = (
  '/', 'Index',
  '/add','Add',
  '/add.html','Add',
)
Run Code Online (Sandbox Code Playgroud)

我建议摆脱.html.这意味着您坚持使用问题中的代码并创建指向页面的链接,如下所示:

<a href="/add">add something</a>
Run Code Online (Sandbox Code Playgroud)


Ign*_*ams 5

将路由更改为"/add.html"或将链接更改为"添加".