[英]sending data from html form to SQLite database using python/flask
I am trying create a registration program where guests can register and their inf will be saved in a database.我正在尝试创建一个注册程序,客人可以在其中注册并将他们的信息保存在数据库中。
I already created my form and database.我已经创建了我的表单和数据库。 The only thing I get stuck on is sending the user input from the form to the database.我唯一遇到的问题是将用户输入从表单发送到数据库。
My HTML code:我的 HTML 代码:
{% block body %}
<form action="{{ url_for('my_form') }}" method="POST">
<div class="container">
<h1>Gasten registratie</h1>
<p>Vul dit formulier in om te registreren</p>
<hr>
<label for="First-Name"><b>Voornaam</b></label>
<input type="text" id="First-Name" placeholder="Vul hier uw voornaam in" name="Voornaam" required>
<label for="Last-Name"><b>Achternaam</b></label>
<input type="text" id="Last-Name" placeholder="Vul hier uw achternaam in" name="Achternaam" required>
<label for="Company-name"><b>Bedrijfsnaam</b></label>
<input type="text" id="Company-name" placeholder="Vul hier uw bedrijfsnaam in" name="Bedrijfsnaam" required>
<label for="Date"><b>Datum</b></label>
<input type="date" id="Date" placeholder="Selecteer de Datum" name="Datum" required />
<hr>
<p>In het kader van onze ISAE certificering registreren wij uw gegevens.</p>
<p>Wij verwerken uw gegevens volgends de regels van het AVG.</p>
<button type="submit" class="registerbtn">Registreren</button>
</div>
</form>
{% endblock %}
My Python code:我的 Python 代码:
from flask import Flask, render_template, url_for, request, redirect
from datetime import datetime
import sqlite3
from sqlite3 import Error
app = Flask(__name__)
# hier maak ik de db aan en een connectie
def create_connection(db_file):
connection = None;
try:
conn = sqlite3.connect(db_file)
print(sqlite3.version)
except Error as e:
print(e)
return conn
# hier roep ik de functie voor de db aan en maak ik een db file "gast.db"
if __name__ == '__main__':
create_connection("gast.db")
# hier maak ik de table aan voor de db (moet ik nog aanpassen voor sqlite3)
def create_table(conn, create_table_sql):
try:
c = conn.cursor()
c.execute(create_table_sql)
except Error as e:
print(e)
def main():
database = r"gast.db"
sql_create_guests_table = """ CREATE TABLE IF NOT EXISTS guests (
id integer PRIMARY KEY,
voor_naam text NOT NULL,
achter_naam text NOT NULL,
bedrijfs_naam text NOT NULL,
datum date NOT NULL
); """
conn = create_connection(database)
if conn is not None:
# maak gast table
create_table(conn, sql_create_guests_table)
else:
print("Error! cannot create the database connection.")
if __name__ == '__main__':
main()
# hier zorg ik ervoor dat
@app.route('/')
def index():
return render_template("index.html")
# hier zorg ik ervoor dat de input uit het formulier naar de db gaat
@app.route('/my_form', methods=['POST'])
def my_form():
if request.method == 'POST':
guest_vnaam = request.form['Voornaam']
guest_anaam = request.form['Achternaam']
guest_cnaam = request.form['Bedrijfsnaam']
guest_datum = request.form['Datum']
safe_vnaam = guests(voor_naam=guest_vnaam)
safe_anaam = guests(achter_naam=guest_anaam)
safe_cnaam = guests(bedrijfs_naam=guest_cnaam)
safe_datum = guests(datum=guest_datum)
try:
db.session.add(safe_vnaam)
db.session.add(safe_anaam)
db.session.add(safe_cnaam)
db.session.add(safe_datum)
db.session.commit()
return redirect('/')
except:
return 'Er ging iets fout met het opslaan van uw gegevens'
else:
return render_template('index.html')
# hier run ik de app
if __name__ == '__main__':
app.run(debug=True)
If someone could help in the right direction, that would be great!如果有人能在正确的方向上提供帮助,那就太好了! Thank you in advance!先感谢您!
Kind regards, Ronny亲切的问候,罗尼
Try doing guest_vnaam = request.form.get('Voornaam')
instead of guest_vnaam = request.form['Voornaam']
.尝试做guest_vnaam = request.form.get('Voornaam')
而不是guest_vnaam = request.form['Voornaam']
。
c = conn.cursor()
add that right under your first if statement. c = conn.cursor()
在你的第一个 if 语句下添加它。 You will need that to save the data in your database.您将需要它来将数据保存在您的数据库中。
And this piece of code will save it in your database这段代码会将其保存在您的数据库中
sql = ("INSERT INTO database.table (columnName,columnName) VALUES (%s, %s, %s, %s)")
c.execute(sql,(guest_vnaam, guest_anaam, guest_cnaam, guest_datum))
connection.commit()
So your code will look like this:所以你的代码看起来像这样:
if request.method == 'POST':
c = conn.cursor()
guest_vnaam = request.form.get('Voornaam')
guest_anaam = request.form.get('Achternaam')
guest_cnaam = request.form.get('Bedrijfsnaam')
guest_datum = request.form.get('Datum')
try:
sql = ("INSERT INTO databasename.tablename (columnName,columnName,columnName,columnName) VALUES (%s, %s, %s, %s)")
c.execute(sql,(guest_vnaam, guest_anaam, guest_cnaam, guest_datum))
connection.commit()
#or "conn.commit()" (one of the two)
return redirect('/')
except:
return 'Er ging iets fout met het opslaan van uw gegevens'
I hope this will help you :)我希望这能帮到您 :)
And a tip, always program in English not in Dutch :P还有一个提示,总是用英语而不是荷兰语编程:P
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.