带有 Flask 的 SQLAlchemy 不提交

SQLAlchemy with Flask does not commit

当我从网页提交表单时,我无法提交。闪烁我需要的数据,我看到它们在那里并且正确,但是提交时出现问题。我确定我在某个地方犯了一个错误,因为除了两个之外,大多数提交都在工作。这是不起作用的两个之一。

型号:

class Feedback(db.Model):
    __tablename__ = 'feedback'
    id = db.Column(db.Integer, primary_key = True)
    rate = db.Column(db.Integer)
    comment = db.Column(db.Text())
    sender_id = db.Column(db.Integer)
    receiver_id = db.Column(db.Integer)

表格:

class LeaveFeedbackForm(Form):
    rate =  IntegerField('Rate', validators = [DataRequired(),
                                               NumberRange(min = 1, max = 5, message = 'Rates admitted are only 1,2,3,4,5')])
    comment = TextAreaField('Comment', validators = [DataRequired()])
    submit = SubmitField('Submit')

观看次数:

@app.route('/leave_feedback/<sender>/<receiver>', methods = ['GET', 'POST'])
def leave_feedback(receiver, sender):
    form = LeaveFeedbackForm()
    rec = int(receiver)
    sen = int(sender)
    if form.validate_on_submit():
        feedback = Feedback( rate = form.rate.data,
                             comment = form.comment.data,
                             receiver_id = rec,
                             sender_id = sen
                            )
        db.session.add(feedback)
        db.session.commit()
        flash('Feedback Left Correctly.')
        return redirect(url_for('index'))
    flash(form.rate.data)
    flash(form.comment.data)
    flash(rec)
    flash(sen)
    return render_template('leave_feedback.html', receiver_id = receiver, sender_id = sender, form = form)

html:

{% block content %}
    <div class="row">
        <div class="large-6 columns">
            <h1>Leave Feedback</h1>
        </div>
    </div>

  <form action="" method="post" name="leavefeedback">
      <div class="row">
        <div class="large-6 columns">
            <label>Rate
                {{ form.rate }}
            </label>
        </div>
       </div>

      <div class="row">
        <div class="large-6 columns">
            <label>Comment
                {{ form.comment }}
            </label>
        </div>
       </div>


      <div class="row">
          <div class="large-6 columns">
            <input class="button radius" type="submit" value="Leave Feedback">
         </div>
      </div>

  </form>
{% endblock %}

您应该添加一个 else 语句:

if form.validate_on_submit():
     ...
else:
    for error in form.errors.itervalues():
        flash(error[0])

然后您会收到来自表单的错误消息。

我弄清楚了我的错误,我只是忘记了我的表格:

{{ form.hidden_tag() }}