如何使用 python flask 应用程序将文本从输入字段发送到 MySQL 数据库
How to send text from input fields to MySQL database using a python flask app
我正在学习写作 python 并且正在开发 Web 应用程序。这有一个带有一组输入字段和一个提交按钮的注册系统。我已确认数据库已连接,并且可以在 运行 应用程序时向其中插入数据。当我在输入字段中输入数据时,它 returns 错误:
Bad Request The browser (or proxy) sent a request that this server could not understand.
这里是 python:
from flask import Flask, request, render_template, redirect, url_for
from flask_mysqldb import MySQL;
from DB_Operations import add_text
import mysql.connector
app = Flask(__name__)
db = MySQL(app);
@app.route('/')
def index():
return render_template("login.html")
@app.route('/dashboard')
def dashboard():
return render_template('dashboard.html')
@app.route("/add_text", methods=["POST", "GET"])
def AddText():
if request.method == "POST":
username = request.form["uname"]
first_name = request.form["fname"]
last_name = request.form["lname"]
password = request.form["pwd"]
email = request.form["email"]
add_new = add_text(username, first_name, last_name, password, email)
print("success")
else:
print("error")
return render_template('login.html')
if __name__ == '__main__':
app.run(debug=True)
第二个文件:
import mysql.connector
#database connection
mydb = mysql.connector.connect(host="localhost",user="root",database="sdv_graphs")
mycursor = mydb.cursor()
def add_text(username,first_name, last_name, password, email):
sql = "INSERT INTO tbl_user (fname, lname, upwd, umail, uname) VALUES (%s, %s, %s, %s, %s)"
val = ("{first_name}", "{last_name}", "{password}", "{email}", "{username}")
mycursor.execute(sql, val)
mydb.commit()
return 1
这是我的 HTML:
<form action="/add_text" method="POST">
<div class="login-box">
<h1 id="page-title">Login</h1>
<div class="textbox sign-up-textbox">
<i class="far fa-user"></i>
<input class="input-box" id="fname" type="text" placeholder="First Name" name="First Name" onfocus="this.placeholder = '', this.parentNode.style.color = 'white'" onblur="this.placeholder = 'First Name'">
</div>
<div class="textbox sign-up-textbox">
<i class="far fa-user"></i>
<input class="input-box" id="lname" type="text" placeholder="Last Name" name="Last Name" onfocus="this.placeholder = '', this.parentNode.style.color = 'white'" onblur="this.placeholder = 'Last Name'">
</div>
<div class="textbox">
<i class="far fa-user"></i>
<input class="input-box login" id="uname" type="text" placeholder="Username" name="Username" onfocus="this.placeholder = '', this.parentNode.style.color = 'white'" onblur="this.placeholder = 'Username'">
</div>
<div class="textbox">
<i class="fas fa-lock"></i>
<input class="input-box login" id="pwd" type="password" placeholder="Password" name="Password" onfocus="this.placeholder = '', this.parentNode.style.color = 'white'" onblur="this.placeholder = 'Password'">
</div>
<div class="textbox sign-up-textbox">
<i class="fas fa-lock"></i>
<input class="input-box" id="cpwd" type="password" placeholder="Confirm Password" name="Confirm Password" onfocus="this.placeholder = '', this.parentNode.style.color = 'white'" onblur="this.placeholder = 'Confirm Password'">
</div>
<div class="textbox sign-up-textbox">
<i class="far fa-envelope-open"></i>
<input class="input-box" id="email" type="email" placeholder="Email" name="Email" onfocus="this.placeholder = '', this.parentNode.style.color = 'white'" onblur="this.placeholder = 'Email'">
</div>
<button class="submit-btn" type="submit" onclick="validateForm()" name="submit">submit</button>
</div>
</form>
我是否犯了一个简单的错误,或者是否有其他方法可以用来将此数据发送到我的数据库?
"Bad Request The browser (or proxy) sent a request that this server couldn't understand." 意思是通过请求对象,你正试图访问一个请求不存在的参数。
所以问题出在这段代码中:
if request.method == "POST":
username = request.form["uname"]
first_name = request.form["fname"]
last_name = request.form["lname"]
password = request.form["pwd"]
email = request.form["email"]
add_new = add_text(username, first_name, last_name, password, email)
print("success")
我建议你打印request.formprint(str(request.form))
的内容,这是一个字典,这样你就可以看到传递给端点的参数。
根据您的 html 代码,代码将变为
if request.method == "POST":
username = request.form["Username"]
first_name = request.form["First Name"]
last_name = request.form["Last Name"]
password = request.form["Password"]
email = request.form["Email"]
add_new = add_text(username, first_name, last_name, password, email)
print("success")
我正在学习写作 python 并且正在开发 Web 应用程序。这有一个带有一组输入字段和一个提交按钮的注册系统。我已确认数据库已连接,并且可以在 运行 应用程序时向其中插入数据。当我在输入字段中输入数据时,它 returns 错误:
Bad Request The browser (or proxy) sent a request that this server could not understand.
这里是 python:
from flask import Flask, request, render_template, redirect, url_for
from flask_mysqldb import MySQL;
from DB_Operations import add_text
import mysql.connector
app = Flask(__name__)
db = MySQL(app);
@app.route('/')
def index():
return render_template("login.html")
@app.route('/dashboard')
def dashboard():
return render_template('dashboard.html')
@app.route("/add_text", methods=["POST", "GET"])
def AddText():
if request.method == "POST":
username = request.form["uname"]
first_name = request.form["fname"]
last_name = request.form["lname"]
password = request.form["pwd"]
email = request.form["email"]
add_new = add_text(username, first_name, last_name, password, email)
print("success")
else:
print("error")
return render_template('login.html')
if __name__ == '__main__':
app.run(debug=True)
第二个文件:
import mysql.connector
#database connection
mydb = mysql.connector.connect(host="localhost",user="root",database="sdv_graphs")
mycursor = mydb.cursor()
def add_text(username,first_name, last_name, password, email):
sql = "INSERT INTO tbl_user (fname, lname, upwd, umail, uname) VALUES (%s, %s, %s, %s, %s)"
val = ("{first_name}", "{last_name}", "{password}", "{email}", "{username}")
mycursor.execute(sql, val)
mydb.commit()
return 1
这是我的 HTML:
<form action="/add_text" method="POST">
<div class="login-box">
<h1 id="page-title">Login</h1>
<div class="textbox sign-up-textbox">
<i class="far fa-user"></i>
<input class="input-box" id="fname" type="text" placeholder="First Name" name="First Name" onfocus="this.placeholder = '', this.parentNode.style.color = 'white'" onblur="this.placeholder = 'First Name'">
</div>
<div class="textbox sign-up-textbox">
<i class="far fa-user"></i>
<input class="input-box" id="lname" type="text" placeholder="Last Name" name="Last Name" onfocus="this.placeholder = '', this.parentNode.style.color = 'white'" onblur="this.placeholder = 'Last Name'">
</div>
<div class="textbox">
<i class="far fa-user"></i>
<input class="input-box login" id="uname" type="text" placeholder="Username" name="Username" onfocus="this.placeholder = '', this.parentNode.style.color = 'white'" onblur="this.placeholder = 'Username'">
</div>
<div class="textbox">
<i class="fas fa-lock"></i>
<input class="input-box login" id="pwd" type="password" placeholder="Password" name="Password" onfocus="this.placeholder = '', this.parentNode.style.color = 'white'" onblur="this.placeholder = 'Password'">
</div>
<div class="textbox sign-up-textbox">
<i class="fas fa-lock"></i>
<input class="input-box" id="cpwd" type="password" placeholder="Confirm Password" name="Confirm Password" onfocus="this.placeholder = '', this.parentNode.style.color = 'white'" onblur="this.placeholder = 'Confirm Password'">
</div>
<div class="textbox sign-up-textbox">
<i class="far fa-envelope-open"></i>
<input class="input-box" id="email" type="email" placeholder="Email" name="Email" onfocus="this.placeholder = '', this.parentNode.style.color = 'white'" onblur="this.placeholder = 'Email'">
</div>
<button class="submit-btn" type="submit" onclick="validateForm()" name="submit">submit</button>
</div>
</form>
我是否犯了一个简单的错误,或者是否有其他方法可以用来将此数据发送到我的数据库?
"Bad Request The browser (or proxy) sent a request that this server couldn't understand." 意思是通过请求对象,你正试图访问一个请求不存在的参数。
所以问题出在这段代码中:
if request.method == "POST":
username = request.form["uname"]
first_name = request.form["fname"]
last_name = request.form["lname"]
password = request.form["pwd"]
email = request.form["email"]
add_new = add_text(username, first_name, last_name, password, email)
print("success")
我建议你打印request.formprint(str(request.form))
的内容,这是一个字典,这样你就可以看到传递给端点的参数。
根据您的 html 代码,代码将变为
if request.method == "POST":
username = request.form["Username"]
first_name = request.form["First Name"]
last_name = request.form["Last Name"]
password = request.form["Password"]
email = request.form["Email"]
add_new = add_text(username, first_name, last_name, password, email)
print("success")