我一直在教自己python和cgi脚本,我知道你的基本脚本看起来像
#!/usr/local/bin/python
import cgi
print "Content-type: text/html"
print
print "<HTML>"
print "<BODY>"
print "HELLO WORLD!"
print "</BODY>"
print "</HTML>"
我的问题是,如果我有一个大的HTML文件,我想在python中显示(它有代码行和代码行,并且里面有JS)我是否必须在每行前面手动添加'print'并转向“进入”等等?或者是否有可以为我转换它的方法或脚本?
谢谢!
答案 0 :(得分:10)
如果调用那个大的html文件(例如)'foo.html'
并且它存在于CGI脚本的当前目录中,那么你需要的只是脚本的主体:
print "Content-type: text/html"
print
with open('foo.html') as f:
print f.read()
如果您遇到Python 2.5,请添加from __future__ import with_statement
作为模块正文的开头。如果您遇到更旧的Python,请将最后两行更改为
print open('foo.html').read()
请注意,当您不使用import cgi
模块的任何功能时,您不需要cgi
,这在您的示例和此答案中都是如此。
答案 1 :(得分:10)
Python支持多行字符串,因此您可以将文本打印出来。
print '''<html>
<head><title>My first Python CGI app</title></head>
<body>
<p>Hello, 'world'!</p>
</body>
</html>'''
它们支持所有字符串操作,包括方法(.upper()
,.translate()
等)和格式化(%
),以及原始模式(r
前缀)和u
unicode前缀。
答案 2 :(得分:0)
当我第一次尝试使用装饰器时,我写了this little CGI decorator来处理HTML头部和正文标签样板文件。所以你可以写:
@CGImethod(title="Hello with Decorator")
def say_hello():
print '<h1>Hello from CGI-Land</h1>'
当被调用时返回:
Content-Type: text/html
<HTML>
<HEAD><TITLE>Hello with Decorator</TITLE></HEAD>
<BODY>
<h1>Hello from CGI-Land</h1>
</BODY></HTML>
然后可以从HTTP服务器的say_hello
或do_GET
方法调用do_POST
。
答案 3 :(得分:0)
Python支持多行字符串。因此,您只需复制HTML代码并将其粘贴到引号中即可。
print ("<html>
<head>
<title>
</title>
</head>
</html>")
以此类推!