[PYTHON] Informationen zur Parameterverarbeitung in Flask's request.args

Wenn du es weißt, kannst du es genießen, also möchte ich, dass sich Leute, die Flask benutzen, daran erinnern.

Der aktuelle Status von flask.request.args ist die folgende Instanz beim Lesen der Quelle.

werkzeug.datastructures.ImmutableMultiDict

Ich denke, die am häufigsten verwendete Methode in request.args ist wahrscheinlich get, aber die Realität ist

from werkzeug.datastructures import TypeConversionDict

Holen Sie sich die Methode von.

Sie können den Typ angeben, indem Sie die Hilfe lesen.

 |  ----------------------------------------------------------------------
 |  Methods inherited from TypeConversionDict:
 |  
 |  get(self, key, default=None, type=None)
 |      Return the default value if the requested data doesn't exist.
 |      If `type` is provided and is a callable it should convert the value,
 |      return it or raise a :exc:`ValueError` if that is not possible.  In
 |      this case the function will return the default as if the value was not
 |      found:
 |      
 |      >>> d = TypeConversionDict(foo='42', bar='blub')
 |      >>> d.get('foo', type=int)
 |      42
 |      >>> d.get('bar', -1, type=int)
 |      -1
 |      
 |      :param key: The key to be looked up.
 |      :param default: The default value to be returned if the key can't
 |                      be looked up.  If not further specified `None` is
 |                      returned.
 |      :param type: A callable that is used to cast the value in the
 |                   :class:`MultiDict`.  If a :exc:`ValueError` is raised
 |                   by this callable the default value is returned.
 |  
 |  ----------------------------------------------------------------------

Mit anderen Worten, dieser Parameter kann leicht als INT-Typ angegeben werden.

Um ein einfaches Beispiel zu nennen: Ich denke, dass Offset- und Limit-Parameter häufig in der Referenz-API erstellt werden, dies kann jedoch in den folgenden zwei Zeilen einschließlich der Typspezifikation erfolgen.

    offset = request.args.get("offset", default=0, type=int)
    limit = request.args.get("limit", default=10, type=int)

Es gibt einige Dinge, die Sie nicht bemerken werden, wenn Sie nur die Flask-Dokumentation lesen. Wenn Sie also die werkzeug-Dokumentation und -Implementierung lesen, werden Sie etwas Unerwartetes finden. Bitte lesen Sie es.

Wenn Sie dies weiter ausbauen, können Sie auch Parameter mit Ihrem eigenen Datentyp empfangen.

class SortType(object):
    accepts = ["-time", "-size", "+time", "+size"]    
    default = ["-time"]

    def __init__(self, sort_parameter):
        super(SortType, self).__init__()    
        if sort_parameter in self.accepts:
           self.sort = sort_parameter
        else:
           self.sort = self.default

    def __repr__(self):
        return self.sort

    def __str__(self):
        return self.sort
sort = '%s' % request.args.get("sort", type=SortType)

Wir definieren eine Klasse mit einigen Sortiertypen und einer Standardsortierung, definieren sie im Typ und erhalten den Sortierparameter.

Recommended Posts

Informationen zur Parameterverarbeitung in Flask's request.args
Sellerie asynchrone Verarbeitung in Flask
Informationen zur Anpassung von Flaschen
Ich habe mich eingehend mit der Verarbeitung von Variablen in Python befasst
Informationen zur Verarbeitung der IoT-Zeitreihendatenaggregationsverarbeitung in Azure Time Series Insights
Dateiverarbeitung in Python
Multithread-Verarbeitung in Python
Textverarbeitung mit Python
Verarbeitung in Python beenden
Über __all__ in Python
Bild-Uploader mit Flasche
UTF8-Textverarbeitung mit Python
Verwenden Sie den Parameterspeicher in Python
Bildverarbeitungssammlung in Python
Überprüfen Sie einfach den Inhaltstyp mit Flask (@content_type).
Verwenden des Python-Modus in der Verarbeitung
Übertragen Sie Parameterwerte in Python
Über "für _ in range ():" von Python
Hochladen mehrerer Dateien mit Flask