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