Python CGI中的HTTP GET参数问题

时间:2014-10-14 01:19:33

标签: python html

我正在学习Python的Web开发。当我打开HTML时,我得到了法拉利菲亚特福特,这是我所期待的,但后来我点击了法拉利,它打开了新的页面作为品牌,型号,这不是我想要的。我想要法拉利迪诺。

你能帮我理解是什么问题吗?

<!DOCTYPE HTML>
<html lang ="en">
<head>
    <meta charset="UTF-8">
    <title>Python Response</title>
</head>
<body>
    <h1>
       <a href="get.py?make=Ferrarri&model=Dino">Ferrari</a>
       <a href = 'get.py?make = Fiat & model = Topolino'>Fiat</a>
       <a href = 'get.py?make = Ford & model = Mustang'>Ford</a>
    </h1>
</body>
</html>

的Python

import cgi

data = cgi.FieldStorage()

make = data.getvalue('make')
model = data.getvalue('model')

print ( 'Content-type:text/html\r\n\r\n' )
print ( '''<!DOCTYPE HTML><html lang = "en">
        <head>
            <meta charset="UTF-8">
            <title>Python Response</title>
        </head>
        <body>
            <h1>, make, model,</h1>
            <a href = "get.html">Back</a>
        </body>
        </html>''' )

3 个答案:

答案 0 :(得分:2)

变量不能是字符串。

import cgi

data = cgi.FieldStorage()

make = data.getvalue('make')
model = data.getvalue('model')

print ( 'Content-type:text/html\r\n\r\n' )
print ( '''<!DOCTYPE HTML><html lang = "en">
        <head>
            <meta charset="UTF-8">
            <title>Python Response</title>
        </head>
        <body>
            <h1>, ''' + make + ', ' + model + ''',</h1>
            <a href = "get.html">Back</a>
        </body>
        </html>''' )

答案 1 :(得分:1)

在测试完之后,HTML正在按预期进行响应。

我的建议与此问题一致:How to pass python variable to html variable?

总之,您可以通过编写函数并返回html以更好的方式执行此操作。此外,一旦你编写了python函数,而不是:

<h1>, make, model,</h1>

您可以在python函数中使用替换,如下所示:

"<h1>, %s, %s,</h1>" % (make, model)

哪个将与这两个变量位于同一个python文件中。

答案 2 :(得分:0)

您的模板输出:

<h1>, make, model,</h1>

这就是输出的全部内容。您可以改为稍微更改一下,然后使用format方法将值插入其中。

html = '''<!DOCTYPE HTML><html lang = "en">
    <head>
        <meta charset="UTF-8">
        <title>Python Response</title>
    </head>
    <body>
        <h1>, {make}, {model},</h1>
        <a href = "get.html">Back</a>
    </body>
    </html>'''

print html.format(make=make, model=model)

花括号,{make}和{model}中的值在字符串中被命名为tokens。在名为html的字符串上使用format()时,可以替换这些标记。在这种情况下,我直接通过名称引用它们。