未将值传递到Python CGI的HTML表单中

0 投票
1 回答
995 浏览
提问于 2025-04-18 08:14

我有一个Python的.py cgi脚本,单独运行时一切正常,但当我尝试通过表单输入新值时就不行了。

下面你会看到这个脚本单独工作时的基本样子。

在这个脚本中,我的程序使用了一个叫做screen_name的值,现在这个值是username1,它可以获取username1的详细信息,并且运行得很好。

问题出现在我尝试使用表单获取其他用户的信息,比如username2或username3等。

这里你会看到这个工作脚本的详细信息。

........................

details = myprogram.show_user(screen_name='**username1**')

print "content-type: text/html;charset=utf-8"
print
print"<html><head></head><body>"
print (details['followers'])
print "<br/>"
print (details['friends'])
print "<br/>"
print (details['name'])

............................

正如我之前提到的,问题出现在我尝试使用表单来捕获一个不同的用户名时。

在我的HTML表单中,通过POST方法有一个字段名叫keyword,字段的值叫username。这个表单的Action指向下面的.py程序。

我想在我的脚本中使用表单中捕获的username值,这样当你输入并提交这个用户名时,.py脚本就会把表单中的值作为screen_name来使用。

所以如果表单现在的keyword是username2或username3,那么.py脚本就需要从

details = myprogram.show_user(screen_name='username1')

改成

details = myprogram.show_user(screen_name='username2')

或者

details = myprogram.show_user(screen_name='username3')

这取决于表单中输入的值。

下面是我尝试过的做法,但没有成功。它总是返回user的值,而不是表单中插入的新值。我想要的是让screen_name等于表单输入的值,这可以是username1、username2等等。

user等于表单中写入的值,我试图通过user=form.getvalue(username)来实现。

当我像下面这样运行脚本时,没有错误,但脚本没有从表单中获取值,它只是执行并给screen_name赋予了当前的值,而不是表单中的值。

这里的重要性在于让screen_name等于表单中写入的值。

所以我说screen_name = user,其中user = form.getvalue('username')

但我需要帮助,因为这没有成功。

谢谢。

哈维尔

............................

import cgi
import cgitb
cgitb.enable()

form = cgi.FieldStorage()

user = form.getvalue('username')

details = myprogram.show_user(screen_name='user')

print "content-type: text/html;charset=utf-8"
print
print"<html><head></head><body>"
print (details['followers'])
print "<br/>"
print (details['friends'])
print "<br/>"
print (details['screen'])

........................................

谢谢

1 个回答

0

不要把变量名放在引号里。

details = myprogram.show_user(screen_name=user)

撰写回答