CSS没有应用于CGI脚本

时间:2014-03-23 07:04:09

标签: python css cgi

我写了这个cgi脚本

#!/usr/bin/env python

import cgi


print "Content-type: text/html\n\n"
print"<html>"
print"<title>Wedmed Search engine</title>"
print"""<link type="text/css" rel="stylesheet" href="stylesheet1.css"/>
<body>

<div class="img" position="center">
    <h1>
        WebMED</h1>
    </div>

<form action="/cgi-bin/hello.py" method="POST">

    <input type="text" size="50" name="data" value=""><br>

    <input type="submit" value="Submit">  
    <input type="reset" value="Reset">

</form>
</body></html>"""

问题是css无法使用我的cgi脚本。它与html代码完美搭配。 有人可以帮忙吗?

6 个答案:

答案 0 :(得分:0)

我猜这是相对/绝对寻址的问题。 尝试将绝对地址设置为css文件。

如果服务器上的文件结构是

/css
    /stylesheet1.css 

然后href将是&#34; /css/stylesheet1.css"

或者stylesheet1.css是否直接在htdocs中 然后href将是&#34; /stylesheet1.css"

答案 1 :(得分:0)

如果python脚本和css文件在同一目录中,请尝试:

<link type="text/css" rel="stylesheet" href="/stylesheet.css" />

在提及css文件的位置之前添加'/'非常重要。

答案 2 :(得分:0)

在类似情况下,我通过以下方式更改了代码:

S=[[
<stats>+200 Stock Price<br>+100% Stock Price Increase <br><stock>+100% Stock Size</stock><br>+10% Company Revenue
]]

S=S.."<"

for v,k in S:gmatch(">([-+].-)%s+(.-)%s*<") do
    print(k,v)
end

...
print "Content-type: text/html\n\n"
print"<html>"
...

在我的情况下,我使用了另一种形式的印刷品

...
print "Content-type: text/html\n\n"
print ""
print"<html>"
...

答案 3 :(得分:0)

我找到了一种不是最好的方法,但却为我做了诀窍。

将您的整个样式表放在stylesheet1.css中,然后将其写在python文件中

f = open('stylesheet1.css', 'r')
style = ''
for i in f:
    style += i
head = '''
    <head>
    <style>
    %s
    <style>
    </head>''' % (style)
print "Content-type: text/html\n\n"
print"<html>"
print head
print """<body>

<div class="img" position="center">
    <h1>
        WebMED</h1>
    </div>

<form action="/cgi-bin/hello.py" method="POST">

    <input type="text" size="50" name="data" value=""><br>

    <input type="submit" value="Submit">  
    <input type="reset" value="Reset">

</form>
</body></html>"""

答案 4 :(得分:0)

这是一条道路和私人问题。 将* .css放在html目录(/ var / www / html)中,而不是./cgi-bin。 在这种情况下,网址应如下所示: href =“/ stylesheet.css”

答案 5 :(得分:0)

首先,在代码中,如果要在python cgi中使用css,则可以添加head。

第二,您可能需要确保配置正确,这意味着您使用的服务器。

下面是一个简单的hello.py的示例,即

#!/usr/bin/python

html ="""Content-type:text/html\r\n\r\n
<html>
<head>
<link type="text/css" rel="stylesheet" href="styles.css" />
</head>
<body>

<h1>This is a heading</h1>
<p>This is a paragraph.</p>

</body>
</html>"""
print html

在示例中,使用apache,结构为

# ls /var/www/cgi-bin
-rwxr-xr-x 1 root root 263 Nov  4 05:55 hello.py
-rwxr-xr-x 1 root root  83 Nov  4 06:38 styles.css

因此,需要在httpd.conf中启用css

ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
<Directory "/var/www/cgi-bin">
    AddHandler default-handler .css
    AllowOverride None
    Options None
    Require all granted
</Directory>

最后,您应该可以看到

enter image description here

那是因为css,即

body {
  background-color: powderblue;
}
h1 {
  color: blue;
}
p {
  color: red;
}