Как мне ввести данные из Python FLASK в базу данных?

0

У меня есть код ниже Python:

@restServer.route("/sendData", methods=['POST'])
def client():
ID = request.form.get('ID')
name = request.form.get('name')
postcode = request.form.get('postcode')
dateofbirth = request.form.get('dateofbirth')
balance = request.form.get('balance')
description = request.form.get('description')

insert_stmt = (
    "INSERT INTO clients (ID, name, postcode, dateofbirth, balance, description) "
    "VALUES (%s, %s, %s, %s, %s, %s)"

)
data = (ID, name, postcode, dateofbirth, balance, description)
cursor.execute(insert_stmt, data)
conn.commit()
print("Did we do it?")
return jsonify(data)

Я также получил ниже код HTML:

  <form method="POST">
         <p>ID of your Avenger:</p> <input type="number" id="ID" required> 
       <p>Name of your Avenger:</p> <input type="text" id="name" required> 
         <p>Post Code of your Avenger:</p> <input type="text" id="postcode" required> 
          <p>Date of Birth of your Avenger:</p> <input type="date" id="dateofbirth" required> 
          <p>Bank balance of your Avenger:</p> <input type="number" id="balance" required> 
          <p>Description of your Avenger:</p> <input type="text" id="description" required> 


        <button class="button1" type="button" id="hashButton" onclick="nameInput()">Submit</button></form>

И, наконец, ниже код Javascript:

  function nameInput() {
   var words = document.getElementById("ID", "name", "postcode", "dateofbirth", "balance", "description" ).value;
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
  if(this.readyState == 4 && this.status == 200) {
  var json = JSON.parse(this.responseText);
  document.getElementById("nameInputReturn").innerHTML = 
  json.name;
  }
  }

        xhttp.open("POST", "http://127.0.0.1:5000/sendData", true);
        xhttp.setRequestHeader("Content-type", "application/x-www-form- 
 urlencoded");
        xhttp.send(words);
    }

Я пытаюсь сделать так, чтобы вы могли вводить данные в форму, а затем загружать эти данные в базу данных. Я понял, как вводить данные, которые я указываю в коде, просто изменяя переменные деталей внутри строки data = (ID, name, postcode, dateofbirth, balance, description). В настоящее время нажата кнопка отправки, но база данных просто добавляет строку, которая имеет NULL для каждого столбца.

Я совершенно новый для Flask, поэтому любая помощь ценится!

  • 0
    Вам действительно нужно использовать JS для отправки формы, хотя использование HTML было бы более простым вариантом?
Теги:
database
flask

1 ответ

2

Ваш внешний вид - это беспорядок. Похоже, вы пытаетесь отправить запрос POST через JS, когда ваш HTML может сделать это лучше и проще.

Попробуйте удалить слушателя из вашей кнопки отправки и сменить тэг формы открытия на что-то вроде <form method="POST" action="http://127.0.0.1:5000/updateName">.

Вы также должны изменить все свои атрибуты id для name. Это связано с тем, что атрибут id не отправляется на сервер. Атрибут name, однако, отправляется и используется для доступа к информации о форме с сервера.

Это должно быть хорошим местом для начала:

<form method="POST" action="http://127.0.0.1:5000/updateName">
  <p>ID of your Avenger:</p> <input type="number" name="ID" required> 
  <p>Name of your Avenger:</p> <input type="text" name="name" required> 
  <p>Post Code of your Avenger:</p> <input type="text" name="postcode" required> 
  <p>Date of Birth of your Avenger:</p> <input type="date" name="dateofbirth" required> 
  <p>Bank balance of your Avenger:</p> <input type="number" name="balance" required> 
  <p>Description of your Avenger:</p> <input type="text" name="description" required> 
  <button class="button1" type="button" id="hashButton">Submit</button>
</form>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню