Таблица базы данных не обновляется при отправке формы - PullRequest
0 голосов
/ 29 марта 2020

Я хочу отправить данные формы со страницы html в свой бэкэнд-код python и сохранить данные в базе данных. Но когда я отправляю свою форму, моя база данных остается неизменной. Я использую flask в бэкэнде с flask_mysqldb для базы данных. Вот мой python код:

from flask import Flask,render_template,request,json
from flask_mysqldb import MySQL
import requests

app = Flask(__name__)

app.config['MYSQL_HOST'] = 'localhost'
app.config['MYSQL_USER'] = 'root'
app.config['MYSQL_PASSWORD'] = ''
app.config['MYSQL_DB'] = 'CUCTOMER_MESSAGES'

mysql = MySQL(app)

@app.route('/', methods=['GET', 'POST'])

def home():
        if request.method == "POST":
                Name = request.form['name']
                Email = request.form['email']
                Phone = request.form['phone']
                Message = request.form['message']
                print(request.form)
                cur = mysql.connection.cursor()
                sql = 'INSERT INTO MyUsers(Name,Email,Phone,Message) VALUES (%s,%s,%s,%s);'
                cur.execute(sql,(Name,Email,Phone,Message))
                mysql.connection.commit()
                cur.close()
        return render_template('index.html')

if __name__ == '__main__':
    app.run()

А вот моя html форма:

<form action="" method="post" class="needs-validation" novalidate>
                <p><small>Select A Service</small></p>
                <div class="row">
                    <div class="col">
                        <select name="enquiry" class="custom-select mb-3">
                            <option selected>General Enquiry</option>
                            <option value="wedding">Wedding Planner</option>
                            <option value="photography">Photography</option>
                            <option value="catering">Catering</option>
                            <option value="decor">Decoration</option>
                            <option value="event">Event Management</option>
                        </select>
                        <textarea class="form-control" rows="4" placeholder="Tell Us About Your Request" name="message" required></textarea>
                    </div>

                    <div class="col">
                        <input type="text" class="form-control" placeholder="Enter Your Name" name="name" required><br>
                        <input type="email" class="form-control" placeholder="Enter Your E-mail" id="email" required><br>
                        <input type="tel" class="form-control" name="phone" placeholder="Enter Your Phone Number" required>
                    </div>

                </div><br>
                <div class="container">
                    <div class="row">
                        <div class="col text-center">
                            <button type="submit" class="btn btn-outline-dark">Send Message</button>
                            <p><small><br>Please note that Wedding Amigos may not be able to honour all booking requests made.</small></p>
                        </div>
                    </div>
                </div><br><br>
            </form>

Что мне делать?

1 Ответ

2 голосов
/ 29 марта 2020

Ваша форма отправляет неверный запрос на сервер. Ваш input тег

<input type="email" class="form-control" placeholder="Enter Your E-mail" id="email" required>

не содержит атрибута name. Из-за этого в форме, отправленной на сервер, отсутствует адрес электронной почты, и это вызывает исключение в вашей строке

Email = request.form['email']

Поскольку исключение возникает до выполнения вашего запроса, в вашей базе данных нет изменений.

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