一个有效的请求 URL 是否会在 web2py 中有一个 '.html' 扩展名?

Would a valid request URL ever have a '.html' extension in web2py?

web2py book's "Core" chapter 说:

web2py maps GET/POST requests of the form:

http://127.0.0.1:8000/a/c/f.html/x/y/z?p=1&q=2

to function f in controller "c.py" in application a,

但是我认为真正有效的 URL 不会有 .html。事实上,在同一页的更下方,我们阅读了:

URLs are only allowed to contain alphanumeric characters, underscores, and slashes; the args may contain non-consecutive dots. Spaces are replaced by underscores before validation.

很明显 .html 不是 args 的一部分,但它里面有一个点。因此,示例 URL 与页面下方记录的有效 URL 相矛盾。

web2py 使用点之后的部分来呈现正确的视图。 a/c/f.htmla/c/f.json 都调用相同的函数(fc.py 控制器中),但是前者会渲染 views/c/f.html 而后者 views/c/f.json (如果存在,否则它将在本地主机中呈现 views/generic.json 或在生产中提高 404)。

注意扩展名可以省略,默认为.html。此外,您可以在控制器中设置 response.view 以更改默认行为。

所以是的,有效的 URL 可能有扩展名。

希望对您有所帮助!