Flask: метод запроса, не принимающий значение datetime из веб-формы через AJAX - PullRequest
0 голосов
/ 21 марта 2019

Я создаю веб-форму, в которой одно или два поля имеют типы данных datetime. Затем я передаю данные формы на сервер через AJAX. Ниже приведен фрагмент кода JQuery.

$(document).ready(function(){
$('#btnSubmit').click(function(){
var start = $("#start").val();
var end = $("#end").val();
$.ajax({
        type:'POST',
        url: '/interuption',

        data: $('#formint').serializeArray(),
        success: function(response){
                alert(response);
                },
        error: function(error){
                console.log(error);
            }
    });

});
});

Связанный HTML выглядит следующим образом:

<form id = "formint" class="myForm" method= "post" action="/interuption">
<th>
<label>Start Time Stamp
<input id = "start" type="datetime-local" name="start_timestamp" required>
</label>
</th>

<th>
<label>End Time Stamp
<input id ="end" type="datetime-local" name="end_timestamp" required>
</label>
</th>
</form>

На стороне сервера я использую Flask. Я использую request.form.get методы для получения datetime. Затем я пытаюсь отправить это на MS SQL Server. Ниже приведены фрагменты кода Python.

cnxn = pyodbc.connect(#credentials)
cursor=cnxn.cursor()
query_insert = "INSERT INTO test.dbo.testFeed(start_timestamp,end_timestamp) 
VALUES (?,?)"

@app.route('/interuption',methods = ['GET','POST'])
def interuption():
    try:
        data_1 = datetime.datetime.strptime(request.form.get('start'),%Y-%m-%d %H-%M-%S')
        data_2 = datetime.datetime.strptime(request.form.get('end'),%Y-%m-%d %H-%M-%S')
        if data_1 and data_2:
            cursor.execute(query_insert,(data_1,data_2))
            cnxn.commit()
            cnxn.close()
            return json.dumps({'status':'OK'})
        else:
            return json.dumps({'error':'data has not been insterted!!'})
     except Exception as e:
         return json.dumps({'excp':str(e)})
    return render_template('form.html')

Когда я запускаю вышеуказанные коды, я получаю сообщение об ошибке следующим образом

{"excp": "time data 'None' does not match format '%Y-%m-%d %H-%M-%S'"}

Очевидно, что request.form.get не получает значения из веб-формы.

Как мне от этого избавиться?

1 Ответ

0 голосов
/ 22 марта 2019

При отправке данных формы в виде пар ключ-значение на сервер ключ будет иметь значение name для <input> (не id), поэтому вместо него следует попробовать request.form.get('start_timestamp') и request.form.get('end_timestamp').

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...