Hintergrund
Nach der Hälfte des Schreibens der Test-Toolbox bin ich heute auf ein Problem mit der Front-End- und Back-End-Dateninteraktion gestoßen, also lasst uns das gemeinsam lösen.
Umwelt
--------------------------------------------------- --- -------------------
Versionsbezogen
Betriebssystem: Mac OS X EI Caption
Python Version: 2.7
IDE: PyCharm
Django: 1.8.2
------------------------------------ ----------------------------------
Hinweis: Ich habe die Get-Methode, POST The, getestet Die Methode gilt auch für
Zeichentyp
Zeichentypdaten sind relativ einfach zu erhalten. Die Front-End-Übertragungsmethode ist wie folgt:
sendData = { "exporttype": exporttype, "bugids": bugids, "test": JSON.stringify({"test": "test"}) };
Im Backend von Django verwenden Sie einfach exporttype = request.GET.get("exporttype")
, um diese Daten normal abzurufen.
Hinweis: In Python2.7 sind die Daten Unicode-codiert. Wenn Sie sie verwenden möchten, müssen Sie manchmal str konvertieren
Ergebnisbeispiel:
Excle < type 'unicode '>
Array-Typ
Array-Typ-Daten abrufen Wenn Sie die Methode zum Abrufen von Zeichenfolgendaten verwenden, ist das Ergebnis „Keine“. Wir müssen diese Methode verwenden:
bugids = request.GET.getlist("bugids[]")
Die auf diese Weise erhaltenen Daten sind vom Array-Typ.
Hinweis: Die Elemente im erhaltenen Array sind Unicode-codiert und müssen irgendwann transcodiert werden
Beispiel für Ergebnisse:
•Die übergebene URL
[14/Jul/2016 11:00:41]"GET /testtools/exportbug/?exporttype=Excle&bugids%5B%5D=102&bugids%
• Erhaltene Daten
[u'102', u'101', u'100', u'99', u'98', u'97', u'96', u'95', u'94', u'93', u'92', u'91', u
Zeichentyp
Zeichentypdaten können tatsächlich als Zeichenfolgendaten betrachtet werden Um die entsprechende Zeichenfolge zu verarbeiten, formatieren Sie sie einfach mit dem JSON-Modul.
Für das Frontend ist die typische Art der Übergabe von Zeichendaten die Übergabe von JSON-Daten. Die verwendete Methode lautet daher:
"test": JSON.stringify({"test": "test"} )
Ergebnisbeispiel:
{"test":"test"}
Zugehöriger Quellcode
•Get-Methode
Get-Methode ist eine Methode in wsgi.
def GET(self): # The WSGI spec says 'QUERY_STRING' may be absent. raw_query_string = get_bytes_from_wsgi(self.environ, 'QUERY_STRING', '') return http.QueryDict(raw_query_string, encoding=self._encoding)
Die endgültige Rückgabe ist ein http.QueryDict(raw_query_string, Encoding=self._encoding)https Originaldaten und QueryDict erbt von MultiValueDict , sodass wir uns MultiValueDict einfach direkt ansehen können.
•MultiValueDict
Tatsächlich sieht der Quellcode nicht schwierig aus.
def get(self, key, default=None): """ Returns the last data value for the passed key. If key doesn't exist or value is an empty list, then default is returned. """ try: val = self[key] except KeyError: return default if val == []: return default return val def getlist(self, key, default=None): """ Returns the list of values for the passed key. If key doesn't exist, then a default value is returned. """ try: return super(MultiValueDict, self).__getitem__(key) except KeyError: if default is None: return [] return default def __getitem__(self, key): """ Returns the last data value for this key, or [] if it's an empty list; raises KeyError if not found. """ try: list_ = super(MultiValueDict, self).__getitem__(key) except KeyError: raise MultiValueDictKeyError(repr(key)) try: return list_[-1] except IndexError: return []
Die getlist-Methode integriert alle Daten und gibt sie zurück.
Die obige Zusammenfassung mehrerer Methoden für Django zum Akzeptieren von Front-End-Daten ist der gesamte vom Herausgeber geteilte Inhalt. Ich hoffe, dass er Ihnen eine Referenz geben kann. Weitere verwandte Artikel finden Sie im PHP-Chinesen Website (www.php.cn)!
.