Heim >Backend-Entwicklung >Python-Tutorial >Detaillierte Erläuterung des HeaderDict of Bottle-Quellcodes
Alle Antworten auf Rahmenanfragen basieren auf einem Prinzip http-Anfrage --> wsgi-Schnittstelle (eigentlich ist die von einer benutzerdefinierten Implementierung im Framework implementierte Funktion unten gekapselt) --> Die Erläuterung der WSGI-Schnittstelle finden Sie im Tutorial von Liao Und verwandeln Sie den Wert in ein iterierbares Objekt und den Wert in ein Listenobjekt, dh Wert = [Wert]. Der WSGI-Standard definiert, dass ein String-Typ in einen Listentyp konvertiert werden soll, was ihm eine bessere Darstellung verleiht. Der Server muss nicht alles auf einmal ausgeben, sondern kann Yield verwenden, um die Ausgabe zu steuern, um zu vermeiden, dass zu viel auf einmal ausgegeben wird. Alles in allem implementiert diese Klasse, die dict kapselt, zwei Funktionen:
class HeaderDict(dict):''' A dictionary with case insensitive (titled) keys. You may add a list of strings to send multible headers with the same name.'''def __setitem__(self, key, value):return dict.__setitem__(self,key.title(), value) #注意这里使用title函数,它能将每个单词的开头大写def __getitem__(self, key):return dict.__getitem__(self,key.title())def __delitem__(self, key):return dict.__delitem__(self,key.title())def __contains__(self, key):return dict.__contains__(self,key.title())def items(self):""" Returns a list of (key, value) tuples """for key, values in dict.items(self):if not isinstance(values, list): values = [values]for value in values:yield (key, str(value)) def add(self, key, value):""" Adds a new header without deleting old ones """if isinstance(value, list):for v in value:self.add(key, v) #注意这里使用了递归elif key in self:if isinstance(self[key], list):self[key].append(value)else:self[key] = [self[key], value]else: self[key] = [value]
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des HeaderDict of Bottle-Quellcodes. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!