В настоящее время я пытаюсь зарегистрировать пользователя, используя HTML-форму.Вводимые пользователем данные будут затем восприняты функцией ajax и отправлены в виде объекта json на сервер фляги.
Объект json будет получен функцией POST Python, которая анализирует данные и сохраняет их в базе данных, используя хранимую функцию.Функция Python POST работает нормально, потому что я тестировал с POSTMAN.
Это отображает форму регистрации:
@app.route('/register', methods=['GET','POST'])
def register():
return render_template('register.html')
, в то время как это выполняет обработку ввода пользователя:
@app.route('/registration', methods=['POST'])
def registration():
jsonobject = request.get_json()
username = jsonobject['username']
password = jsonobject['password']
res = spcall("newcounselor", (username, password),True)
if 'Error' in str(res[0][0]):
return jsonify({'status': 'error', 'message': res[0][0]})
return jsonify({'status': 'ok', 'message': res[0][0]})
Чтобы передать данные из html-формы в функцию python, указанную выше, я использую функцию поста AJAX, которую я назначил в качестве значения onclick для кнопки html-формы:
<script>
function register() {
var username = $('#inputUsername').val();
var password = $('#inputPassword').val();
var jsonobject = JSON.stringify({"username":username,
"password":password
});
$.ajax({
url: "/registration",
data: jsonobject,
type: "POST",
contentType: 'application/json;charset=UTF-8',
dataType: "json",
success: function (response) {
<!-- window.location.replace('/login')-->
alert(response);
},
error: function (error) {
alert(error);
},
beforeSend: function (xhrObj){
xhrObj.setRequestHeader("Authorization",
"Basic " + btoa("xenia:Incorrect"));
}
})
}
</script>
Что ядо сих пор пытался:
- окружил мой spcall try-исключением
- проверил, получает ли javascript данные из формы (да!)
- проверено, работает ли функция Python post (проверено с помощью POSTMAN)
- проверено, работает ли spcall (это так!)
- Я изменил jsonobject = request.get_json ()to jsonobject =
request.get_json ( force = True )
Но все равно это не работает.Он возвращает только код состояния 200, но ничего не добавляет в базу данных postgres.Что я делаю не так?