2016-03-26 10 views
2

Ich benutze Flask Restful reqparse Schnittstelle für Parsing Anfrage Parameter. Ich habe Feld für Datum, die erforderlich ist, und für die ich die Validierung durchführenFlask Restful Anfrage Analyse mit entsprechenden Nachrichten

parser = reqparse.RequestParser(bundle_errors=True) 
parser.add_argument('date',type=date_type,required=True,help='date cannot be blank') 
args = parser.parse_args() 

Ich Brauch bisher mit Python-dateutil DATE_TYPE Typ für die Validierung dieser Zeichenfolge definiert haben, können

def date_type(date_str): 
    try: 
     return parser.parse(date_str) 
    except: 
     raise ValueError('Not a valid date format') 

Paket analysiert werden Ich möchte entsprechende Nachrichten zurückgeben, wenn das Datumsfeld fehlt oder das Datum kein gültiges Datum ist, aber mit add_argument darf ich nur eine Hilfemeldung haben. Erlaubt add_argument eine andere Nachricht im Falle eines fehlenden und ungültigen Datentyps.

Antwort

1

Hie,

Ich denke, Sie sollten marshmallow versuchen.

Es behandelt die ungültigen oder fehlenden Daten.

Und auch flask-restful Dokumentation besagt, dass ReqParse wird in der kommenden Version entfernt werden.

+0

ich, dass bekannt ist, ist es möglich, in reqparse dies ebenfalls zu tun. Auch Documentation für Flask-Marshmallow enthält keine Request-Parsing-Beispiele. –

+0

sollten Sie das Beispiel in der Marshmallow-Dokumentation für Kolben überprüfen. – formatkaka

1

Also wie von Flasch-erholsamen Dokumentation vorgeschlagen, muss ich Webargs für die Analyse meiner Anfrage verwenden, hinter den Kulissen Marshmallow verwendet. Hier ist ein Beispiel Beispiel dafür ist, dass jemand helfen würde suchen, es zu benutzen

from webargs import fields 
from webargs.flaskparser import use_args 

user_args={ 
    'user_id':fields.Int(required=True), 
    'date':fields.DateTime(required=True)), 
    'start_date':fields.DateTime(required=False) 
    } 


class User(Resource): 
    #method_decorators = [requires_auth] 
    @use_args(user_args) 
    def get(self,args): 
    return {"hello":"world"} 
Verwandte Themen