Не удается правильно заполнить WTForm с помощью request.args

#python #json #flask #flask-wtforms

#python #json #flask #flask-wtforms

Вопрос:

Я пытаюсь заполнить форму с помощью WTForms:

 class SearchForm(Form):
    dt1 = DateTimeField(validators=[validators.Required()])
    dt2 = DateTimeField(validators=[validators.Required()])
    count  = IntegerField(default=10, validators=[validators.Optional()])
    offset  = IntegerField(default=0, validators=[validators.Optional()])

@app.route('/rest-api/get_calls/<phone_number>', methods=['GET'])
def get_calls(phone_number):
    form = SearchForm(request.args)
  

Запрос такой:

 127.0.0.1 - - [24/Oct/2016 23:23:19] "GET /rest-api/get_calls/003223185901?dt1=2016-01-01T00:00:00amp;dt2=2016-08-31T00:00:00 HTTP/1.1" 404 -
  

но я получаю это:

 {'dt2': ['This field is required.'], 'dt1': ['This field is required.']}
  

Похоже, request.args не работает должным образом.

Ответ №1:

Вы не передаете значения даты / времени в правильном формате. DateTimeField ожидается %Y-%m-%d %H:%M:%S , но вы прошли %Y-%m-%dT%H:%M:%S , обратите внимание на T . Либо передайте ожидаемый формат, либо измените его с помощью DateTimeField(format='%Y-%m-%dT%H:%M:%S', ...) .