Ciao a tutti! Dopo aver seguito un corso online per la creazione di webapp con Flask mi sto cimentando nella costruzione di un piccolo programmino per la raccolta di ordini per una lavanderia.
Unico problema è che non riesco ad inserire i dati dal form nel db che ho configurato. Ho letto e riletto le guide e le lezioni del video corso ma proprio non riesco a trovare dove ho sbagliato, spero possiate aiutarmi.
Grazie!
##############GESTIONEORDINI.py###########
import os
from flask import Flask, render_template, url_for, redirect, session
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
import datetime
from forms import AddOrdine, DelOrdine
app = Flask(__name__)
app.config['SECRET_KEY'] = 'mysecretkey'
############################################
#### SQL DB SECTION ##########
############################################
basedir = os.path.abspath(os.path.dirname(__file__))
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'data.sqlite')
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
Migrate(app, db)
######### MODEL ######################
##########################################################
######### TABELLA ORDINE/UTENTE ######################
class OrdineUtente(db.Model):
__tablename__ = 'ordineutente'
id = db.Column(db.Integer, primary_key=True)
nomeut = db.Column(db.Text)
gc = db.Column(db.Integer)
pant = db.Column(db.Integer)
cam = db.Column(db.Integer)
note = db.Column(db.UnicodeText)
date = db.Column(db.DateTime, default=datetime.datetime.utcnow)
def __init__(self, nomeut, gc, pant, cam, note, date):
self.nomeut = nomeut
self.cam = cam
self.gc = gc
self.pant = pant
self.note = note
self.date = date
def __repr__(self):
return self.id, self.nomeut, self.gc, self.pant, self.cam, self.id
db.create_all()
#########################################
###### View Functions - Have Forms ######
#########################################
@app.route('/')
def index():
return render_template("home.html")
@app.route('/add', methods=['GET', 'POST'])
def add_ordine():
form = AddOrdine()
if form.validate_on_submit():
newordine = OrdineUtente(
form.nomeutente.data,
form.giacche.data,
form.pantaloni.data,
form.camicie.data,
form.note.data
)
db.session.add(newordine)
db.session.commit()
return redirect(url_for('lista'))
return render_template('add.html', form=form)
@app.route('/del', methods=['GET', 'POST'])
def delete_ordine():
form = DelOrdine()
if form.validate_on_submit():
id = form.id.data
pup = OrdineUtente.query.get(id)
db.session.delete(pup)
db.session.commit()
return redirect(url_for('lista'))
return render_template('delete.html', form=form)
@app.route('/lista')
def lista_ordine():
items = OrdineUtente.query.all()
return render_template('lista.html', items=items)
if __name__=='__main__':
app.run(debug=True)
##########FORMS.py##########
from flask_wtf import FlaskForm
from wtforms import SelectField, SubmitField, TextAreaField, IntegerField
class AddOrdine(FlaskForm):
nomeut = SelectField(u'User Name:',
choices = [('pippo','Pippo'),
('pluto','Pluto'),
('paperino','Paperino'),
('topolina','Topolina'),
('topolino','Topolino')
])
giacche = SelectField(u'Shirts:',
choices = [('1','1'),
('2','2'),
('3','3'),
('4','4')
])
pantaloni = SelectField(u'Pants:',
choices = [('1','1'),
('2','2'),
('3','3'),
('4','4')
])
camicie = SelectField(u'Jackets:',
choices = [('1','1'),
('2','2'),
('3','3'),
('4','4')
])
note = TextAreaField('Note: ')
submit = SubmitField()
class DelOrdine(FlaskForm):
id = IntegerField('Order to delete ')
submit = SubmitField("delete")ù
###########ADD.html###########
{%extends "base.html"%}
{%block content%}
<form method="post">
{{form.nomeut.label}}{{form.nomeut}}
{{form.giacche.label}}{{form.giacche}}
{{form.camicie.label}}{{form.camicie}}
{{form.pantaloni.label}}{{form.pantaloni}}
{{form.note.label}}{{form.note}}
{{form.submit}}
{%endblock%}
</form>
##############################