'FlaskForm inserting null values into db despite DataReguired
I have a Flask form and it adds entries into db without issues. However, when I click 'submit' on the empty form, it adds null entries. I already have limitation set to 'DataRequired'. What else do I need to stop this from happening?
My form:
class AddNoteForm(FlaskForm):
note = StringField('Note',[DataRequired()])
add = SubmitField('Add Note')
My model:
class Note(db.Model):
id = db.Column(db.Integer,primary_key = True)
note = db.Column(db.String(150),nullable = False)
date_added = db.Column(db.DateTime,default = datetime.utcnow)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
My routes.py:
@routes.route('/userpage',methods=['GET','POST'])
@login_required
def userpage():
print('page start')
session.get("current_user")
user_notes = Note.query.filter_by(user_id = current_user.id)
if request.method == "POST":
print('method is post')
if current_user.is_authenticated:
print ('user in session')
note = Note(note = request.form.get('addnote'), user_id = current_user.id)
db.session.add(note)
db.session.commit()
return render_template('userpage.html', note=note, user_notes=user_notes)
else:
print('user not in session"')
return render_template('userpage.html')
return render_template('userpage.html', user_notes=user_notes)
my form-html:
{% extends 'base.html' %}
{% block body %}
<p>Welcome {{ current_user.name }}</p>
<br>
<form method='post'>
<table>
<tr>
<td></td> <input type="text", name ="addnote", placeholder="Add note"/>
</tr>
</table>
<input class ="button" , type="submit" />
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/>
<p>
{% for item in user_notes %}
<li class = "diary"> {{ item.note }}</li>
{% endfor %}
</p>
</form>
{% endblock %}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|