簡體   English   中英

為什么cgi.FieldStorage的前兩個參數為None?

[英]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)

namefilename都是可選值。 對於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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM