web.py中的超链接

时间:2011-12-25 16:31:17

标签: 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!')

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

为什么我会继续'找不到'?

2 个答案:

答案 0 :(得分:8)

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

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

但在一个现代化的动态系统中,通常最好只在单个“页面”上没有结尾。

所以你可以像Ignacio所说的那样,摆脱.html并请求/add页面,这是该资源的有效和足够的唯一标识符。

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

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

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

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

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

<a href="/add">add something</a>

答案 1 :(得分:5)

将路线更改为“/add.html”或将链接更改为“添加”。