[英]Why are the first two arguments of cgi.FieldStorage None?
在Python CGI環境中,我使用以下代碼從GET / POST請求中打印值:
import cgi
print(cgi.FieldStorage())
輸出為:
FieldStorage(None, None, [MiniFieldStorage('name', 'john')])
在這里,我為name
參數提供了'john'
值,並且得到了預期的結果。
但是為什么前兩個值None
? 它們的用途是什么,它們持有什么?
根據cgi.py
模塊的來源, FieldStorage.__repr__
方法是:
def __repr__(self):
"""Return a printable representation."""
return "FieldStorage(%r, %r, %r)" % (
self.name, self.filename, self.value)
name
和filename
都是可選值。 對於FieldStorage
,將從content-disposition
標頭(如果有)中自動設置。
使用dict
風格的方法(例如keys
和__getitem__
時, name
似乎用作此FieldStorage
keys
。
filename
由接受文件上傳的CGI腳本使用。
如果您獲得MiniFieldStorage
(“在無法上傳文件時使用”),則__repr__
就是:
def __repr__(self):
"""Return printable representation."""
return "MiniFieldStorage(%r, %r)" % (self.name, self.value)
與上述相同,減去filename
段。 與FieldStorage
不同,它在__init__
接受name
的值,並且除了在__repr__
重復它外,不執行任何__repr__
。 (它也可能在某處用作字典鍵。)
坦白說,這兩個類的文檔字符串比cgi
模塊官方文檔中的文檔字符串要好得多。 (此外, FieldStorage
類做了很多不同的事情,很難用語言來描述。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.