带有Python后台的Web界面

0 投票
1 回答
539 浏览
提问于 2025-04-17 15:44

我用Python开发了一个简单的应用程序(使用Tkinter界面)。现在我想为这个应用程序提供一个网页界面。我知道Python脚本会在服务器上作为CGI运行。但我希望所有操作都在同一页面上进行,也就是说,想要实现这样的功能:

  1. 用户可以在一个文本框中输入内容
  2. 当点击提交按钮时,Python脚本会根据输入内容运行并生成输出
  3. 输出会在同一页面上显示,而不会重新加载页面

我觉得可以用Ajax来实现这个功能(如果这是唯一的方法,我会去学习它),但有没有更简单的方法呢?我尝试过在Python中生成前端,并将按钮链接到同一个脚本中的一个函数,但那样不行……

谢谢

附注:如果标题和标签有点误导,我很抱歉……我不太确定该选什么……

编辑:我尝试了这个,但不行

#!/usr/bin/python2
import cgi

print 'Content-type: text/html'
print """
<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Test</title>
    </head>
    <body>
"""

data = cgi.FieldStorage()
sometext = data['sometext'].value
if sometext != '':
    print "<p>" + sometext + "</p>"

print """
        <form action="test.py" method="post">
            <input type="text" name="sometext">
            <input type="submit">
        </form>
    </body>
</html>
"""

1 个回答

0

我刚刚意识到,上面的代码需要使用 getvalue 函数。把这个代码保存为 test.cgi 后,我从我的 public_html 目录(这个目录里存放着我所有的网页文件)运行它,结果就成功了。

#!/usr/bin/python3
import cgi

print( 'Content-type: text/html')
print( """
<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Test</title>
    </head>
    <body>
""")

data = cgi.FieldStorage()
sometext = data.getvalue('sometext',  '')
if sometext != '':
    print( "<p>" + sometext + "</p>")

print( """
        <form action="test.cgi" method="post">
            <input type="text" name="sometext">
            <input type="submit">
        </form>
    </body>
</html>
""")

撰写回答