在Python CGI环境中,我使用以下代码从GET / POST请求中打印值:
import cgi
print(cgi.FieldStorage())
输出结果为:
FieldStorage(None, None, [MiniFieldStorage('name', 'john')])
在这里,我提供了name
参数,其值为'john'
,我按预期得到了它。
但为什么前两个值为None
?他们使用了什么,他们持有什么?
答案 0 :(得分:0)
根据Tsk.mapError
模块的来源,FieldStorage.__repr__
方法是:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
</urlset>
<url>
<loc>http://www.yoururl.com/</loc>
<lastmod>2015-03-18T18:14:04+00:00</lastmod>
<changefreq>weekly</changefreq>
<priority>1.00</priority>
</url>
<url>
<loc>http://www.yoururl.com/</loc>
<lastmod>2015-03-18T18:14:04+00:00</lastmod>
<changefreq>weekly</changefreq>
<priority>0.80</priority>
</url>
<url>
<loc>http://www.yoururl.com/</loc>
<lastmod>2015-03-18T18:14:04+00:00</lastmod>
<changefreq>weekly</changefreq>
<priority>0.80</priority>
</url>
<url>
<loc>http://www.yoururl.com/</loc>
<lastmod>2015-03-18T18:14:04+00:00</lastmod>
<changefreq>weekly</changefreq>
<priority>0.80</priority>
</url>
cgi.py
和def __repr__(self):
"""Return a printable representation."""
return "FieldStorage(%r, %r, %r)" % (
self.name, self.filename, self.value)
都是可选值。对于name
,会自动从filename
标头设置,如果有的话。
FieldStorage
和content-disposition
等name
风格的方法时, FieldStorage
似乎被用作此dict
的关键。
keys
由接受文件上传的CGI脚本使用。
如果您获得__getitem__
(“在没有文件上传的情况下使用”),那么__repr__
就是:
filename
与上述相同,减去MiniFieldStorage
字段。与def __repr__(self):
"""Return printable representation."""
return "MiniFieldStorage(%r, %r)" % (self.name, self.value)
不同,它在filename
中取FieldStorage
的值,除了在name
中重复之外没有任何作用。 (它可能也被用作字典键......某处。)
坦率地说,这两个类的文档字符串比你在cgi
module's official docs中找到的要好得多。 (此外,__init__
类会执行不同内容的批次,因此难以用文字描述。)