Forum >> Programmazione Python >> Web e Reti >> Problema Flask inserimento dati in db con SqlAlchemy

Pagina: 1

Salve a tutti, sto scrivendo questa web-app per la raccolta ordini di una tintoria utilizzando Flask. Il sito in se si muove unico problema è che dalla pagina Add.html non riesco ad aggiungere alcun ordine al db. Chiedo il vostro aiuto, non riesco a capire dove ho sbagliato!
##############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>
##############################





Ciao, ma che errore ottieni?
Ciao Daniele e grazie per l'aiuto. Ho risolto. Praticamente mancava il Csrf token per cui il forum is_validate() restituiva sempre falso ed il forma non veniva caricato.
Ciao Daniele e grazie per l'aiuto. Ho risolto. Praticamente mancava il Csrf token per cui il forum is_validate() restituiva sempre falso ed il forma non veniva caricato.
Bene così, da sempre una certa soddisfazione risolvere i problemi in autonomia.

Happy coding.



Pagina: 1



Esegui il login per scrivere una risposta.