【问题标题】:How do I use python as a server-side language?如何使用 python 作为服务器端语言?
【发布时间】:2017-04-18 00:10:54
【问题描述】:

我正在尝试使用 Python 而不是 PHP(仅用于教育目的)。我正在 XAMPP 上测试我的网页,并且我已经在配置中添加了 python 和 cgi。 我设法用这段代码制作了一个非常基本的网页

#!/Python/python

print("Content-Type: text/plain;charset=utf-8")
print()

print("Hello World!")

不过,就是这样。我找不到有关如何使用 Python 3+ 提供网页的任何信息。大多数信息已经过时或有争议。是否有关于如何将 Python 用作服务器端语言的最新指南?

【问题讨论】:

  • 我建议先看看 Flask (flask.pocoo.org)。当然还有其他流行的框架,比如 Django 等。
  • 您所拥有的是一个基本的 CGI 脚本。使用 CGI,您只需 print 想要在浏览器中显示的 HTML(显然发送 text/html 的内容类型)。你当然可以这样使用 Python;这是编写简单脚本的有效方法。cgi 模块将帮助您解析发送到脚本的数据。
  • @Nicarus 我试过但不明白如何使用它 - 只需复制/粘贴代码就会出现错误 500。

标签: python web xampp


【解决方案1】:

出于您提到的目的,当前的设置应该可以工作(至少在一段时间内):

Apache 设置

httpd.conf的变化

  1. denied 更改为 granted

<Directory /> AllowOverride none Require all granted </Directory>

  1. 查找 Options +Indexes +FollowSynsLinks........ 并将 +ExecCGI 添加到该行。

Options +Indexes +FollowSymLinks +Multiviews +ExecCGI

  1. 查找 AddHandler cgi-script .cgi 并将 .py 添加到其中

AddHandler cgi-script .cgi .py

httpd-vhosts.conf

的变化

<Directory "{Your directory}"/> Options +Indexes +Includes +FollowSymLinks +MultiViews +ExecCGI AllowOverride All Require all granted </Directory>


example.py

第一行 Python 代码#!C:\{somepath}\python

您需要为第一行和注释的代码行找到正确的路径和条形约定(/、\、//...)。在您的示例中是:#!/Python/python

运行这个 script.py 来找到它

import sys print(sys.executable)

将输出粘贴到#! 旁边,您应该能够在到您的 **www\ 文件夹中测试您的 test-code.py 如果碰巧它不起作用,请尝试 python、python.exe 的不同组合以及 #! 行旁边的“/”“//”“\”等不同的条形约定。

要显示 HTML 文件,请将 print ('Content-type: text/html\n\n') 添加到您的 .py 代码中。**

完整代码
请注意 f html_content = f'''&lt;html&gt;...

#!C:\Program Files (x86)\Python37-32\python
#  -*- coding: utf-8 -*-
import cgi

stringvar = 'Hello variable'
intvar = 30
html_content = f'''<html>
<head><title>My first Python CGI app</title></head>
<body>
<p>Hello, 'world'!</p>
<p>This is a stringvar = {stringvar} </p>
<p>This is intvar = {intvar} </p>
</body>
</html>'''

print ('Content-type: text/html\n\n')
print (html_content)

“大部分信息已经过时或有争议”

完全同意。我希望这行得通!

【讨论】:

  • 这个答案假设我们自己配置一个 Apache 服务器。我对如何在 WHM/cPanel 下使用 Python 服务器端感兴趣。我没有在 cPanel 文档中看到 Python,只有 PHP。
  • @DavidSpector 我仍然对此有同样的担忧。遗憾的是,WHM/cPanel 仍然没有给予 Python 我认为应有的关注。但是如果安装了 Python,理论上仍然可以使用 shell 访问(甚至一些共享主机也提供);或者由于没有root访问权限,支持人员可能会执行安装。如果您对其进行测试或获得经验,请告诉我!
【解决方案2】:

尼卡洛斯说的是一个有效的建议,但我也推荐一些其他的东西。

首先,对于您的开发环境,您不需要使用 xampp 或 wamp 之类的东西,python 有自己的 HTTP 服务器,虽然不是最简单的东西,但我将在接下来解释的库和框架中使用它。

因此,大多数 Python Web 开发人员不使用原始 Python,而是使用 Python 作为 Web 编程语言。大多数开发人员使用某种框架或库。这些框架的范围从像 Django 这样相当沉重和固执己见的框架,到像 Flask 这样的较小框架。大多数(如果不是全部)这些框架都提供了某种简单快捷的方法来设置用于测试的开发 HTTP 服务器。

我建议您首先查找 Django,因为它有最全面的教程和指南可以帮助您入门。然后,那些你更熟悉 Python 语言的人可以相当轻松地使用其他东西,而无需手持。

With django you can start here

【讨论】:

  • 我很乐意使用 Flask,但我不知道如何使它工作 - 简单地安装它并复制粘贴代码不起作用,因为每当我尝试打开时都会收到错误 500它通过本地主机。而且 Flask 网站上的描述对我来说没有多大意义,因为我对服务器了解不多
  • @BarsiktheCat 您是否尝试按照 Flask 教程进行操作? flask.pocoo.org/docs/0.11/tutorial 如果您打算设置服务器,您真的应该花一些时间来了解服务器。
  • @IrmendeJong 就像我说的 - 在我执行任何这些步骤之前,我需要正确设置服务器,但我没有找到足够的信息。不是编码问题,是设置问题
  • @BarsiktheCat 这里解释了flask.pocoo.org/docs/0.11/tutorial/setup/#tutorial-setup 如何运行应用程序。
【解决方案3】:

Python 可以是一种很棒的服务器端语言,但不像 PHP。强烈推荐使用框架,比如flask。

在 PHP 中,您有不同的 .php 文件(如 index.php)来执行基本路由,但在 python(使用 Flask 和其他一些框架)中,您必须在函数中定义 URI 路径。

你可以在这里看到一个例子,来自它的网页Flask

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
    app.run()

如果您正在寻找 API REST 框架,请查看 Falcon

【讨论】:

  • Flask 不是网络服务器。 Web 服务器类似于 Nginx 或 Apache。
  • 完整的生产服务可能需要 Apache,但有很多小型服务器足以满足开发目的。 Python 附带的wsgi 模块是一个开始。我会为其他人检查flask 文档。
  • 嗯,这就是问题所在——我无法让示例代码工作。它似乎在编写方式和设置本地服务器的方式上都与 PHP 完全不同
猜你喜欢
  • 1970-01-01
  • 2011-10-07
  • 1970-01-01
  • 1970-01-01
  • 2021-08-31
  • 2021-03-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多