Thursday 15 August 2013

python - How to edit a class instance through a WTForm -



python - How to edit a class instance through a WTForm -

i trying set settings page, logged in user able adjust few (currently two) attributes of user class. using sqlalchemy handle database queries. settings page , form displays , works before effort tie in user class, believe it's issue flask code. attempted follow illustration code in wtforms crash course of study documentation, still resulted in error. help or guidance appreciated.

flask code:

class settingsform(form): topics = textfield('topics') emailfrequency= radiofield('email frequency', choices = [('daily', u'daily'), ('weekly', u'weekly'), ('monthly', u'monthly'), ('never', u'never')], default='weekly') submit = submitfield("save changes") @application.route('/settings', methods = ['get', 'post']) @login_required def settings(request): user = current_user form = settingsform(request.form) if request.method == 'post' , form.validate(): user.emailfrequency = form.emailfrequency.data user.topics = form.topics.data db.session.commit() homecoming render_template('settings.html', page_title = "success", form=form, success=true) elif request.method == 'get': homecoming render_template('settings.html', page_title = 'customize settings using form below', form = form)

html

{% extends "base-layout.html" %} {% block content %} {% if success %} <h2> settings updated! </h2> {% else %} <h2> customize settings</h2> <form class="form" action="{{url_for('settings')}}" method="post" role="form"> {{form.hidden_tag()}} <div> {{form.topics.label}} </div> <div> {{form.topics(placeholder="e.g. gas, oil, renewables", class="form-control")}} </div> <div> {{form.emailfrequency.label}} </div> <div> {{form.emailfrequency}} </div> <div> {{form.submit}} </div> </form> {% endif %} {% endblock %}

hope helps if else has same issue, form worked when removed request input settings function follows:

@application.route('/settings', methods = ['get', 'post']) @login_required def settings(): user = current_user form = settingsform(request.form) if request.method == 'post' , form.validate(): user.emailfrequency = form.emailfrequency.data user.topics = form.topics.data db.session.commit() homecoming render_template('settings.html', page_title = "success", form=form, success=true) elif request.method == 'get': homecoming render_template('settings.html', page_title = 'customize settings using form below', form = form)

if explain why worked, helpful in future.

python flask-sqlalchemy flask-wtforms

No comments:

Post a Comment