Python 仅用于构建网站的后端吗?

Léo*_* 준영 5 url python

我没有看到任何由 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 不会改变”


Zif*_*fre 8

好吧,可能大多数人隐藏扩展名,因为它是更聪明的方法。这意味着如果你说,切换到 PHP(不是你想要的......),你就不必更改扩展名。

但是,有些站点带有.py扩展程序(Google 的几个部分都有)。

更好的问题是,为什么大多数 ASP.NET 和 PHP 用户坚持保留扩展?

  • @Masi:没有模块可以执行特定操作来删除扩展名。实际上,在 Python 中没有要摆脱的扩展。换句话说,URL 中的扩展名不需要与文件的扩展名相对应。因此,如果您的 Web 应用程序由 .py 文件组成,则绝对没有理由您的 URL 需要以 .py 结尾。如果您习惯了 PHP,这可能没有意义,因为 PHP 强制 URL 的扩展名与文件的扩展名相同(好吧,您甚至可以解决这个问题,但不是特别简单);我认为在 ASP 中也是如此。 (2认同)

dbr*_*dbr 4

通常,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)设置。