簡體   English   中英

帶有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() }}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM