我没有看到任何由 Python 构建的网站,网站的 url 末尾都包含 .py。我只见过index.htmland index.php,但有时没有像 SO 那样。我知道你可以通过 .htaccess -file 以某种方式隐藏结尾。
我想知道这样做的原因。
为什么没有以 .py 结尾的网站?
hay*_*lci 17
一个好的 URL 将独立于技术,因此 .php 或 .py 或 .rb 扩展名是需要防止的。大多数情况下,python 框架(如 Turbogears)处理所有 URL 解析,并且在后台运行的 python 程序以良好的数据结构获取其所有参数,因此在这种情况下您看不到任何文件扩展名。
请参阅Tim Berners-Lee 的“酷 URI 不会改变”
好吧,可能大多数人隐藏扩展名,因为它是更聪明的方法。这意味着如果你说,切换到 PHP(不是你想要的......),你就不必更改扩展名。
但是,有些站点带有.py扩展程序(Google 的几个部分都有)。
更好的问题是,为什么大多数 ASP.NET 和 PHP 用户坚持保留扩展?
通常,PHP 脚本是直接访问的,类似于 CGI 脚本 - 基本上您像访问任何常规文件一样访问脚本,但 Web 服务器拦截此请求,运行脚本并返回输出而不是文件内容。
大多数 Python 框架都有自己的路由系统,您可以在其中定义类似......
urls = (
('^/article/(\d+)$', ArticleController),
('^/user/(.+?)$', UserController)
)
Run Code Online (Sandbox Code Playgroud)
..然后你会访问类似..
http://example.com/router.py?uri=article/123
Run Code Online (Sandbox Code Playgroud)
..它将通过 中定义的 URL 映射运行urls,并将请求发送到适当的类...但是router.py在所有 URL 中包含该部分有点糟糕,因此您可以使用mod_rewrite重定向/(.*)到/router.py/$1(通过.htaccess,您的 Apache配置等)
您绝对可以使用 PHP 或任何其他语言做同样的事情 - 这正是CodeIgniter 的工作原理(PHP 框架)
如果你完全疯了,你可以使用mod_rewrite并映射/user/(\d+).py到/ViewController.php?id=$1或其他东西,但通常没有必要向页面添加假扩展(有一些例外,主要是向后兼容性,并允许在 API 中访问不同格式的数据)
您还可以使用 Python 执行“PHP 方式”,如果您将每个页面编写为单独的 CGI 脚本,则大多数 Python 框架倾向于使用我上面描述的 MVC(或类似 MVC)设置。
| 归档时间: |
|
| 查看次数: |
2065 次 |
| 最近记录: |