首页 > 解决方案 > 如何从 RadioField 获取输入?烧瓶和 sqlAlchemy

问题描述

我正在编写一个可以跟踪我读过的书的网络应用程序。要记录一本新书,用户还需要给它一个显示为星级的评级(使用 html&css)。以下代码不包含 css 部分。

<div class="rate">
            <input type="radio" id="star5" name="rate" value="5" />
            <label for="star5" title="text">5 stars</label>
            <input type="radio" id="star4" name="rate" value="4" />
            <label for="star4" title="text">4 stars</label>
            <input type="radio" id="star3" name="rate" value="3" />
            <label for="star3" title="text">3 stars</label>
            <input type="radio" id="star2" name="rate" value="2" />
            <label for="star2" title="text">2 stars</label>
            <input type="radio" id="star1" name="rate" value="1" />
            <label for="star1" title="text">1 star</label>
</div>

这是 forms.py 的一部分,我感兴趣的是评级 - RadioField

class PostForm(FlaskForm):
    title = StringField('Title',validators=[data_required()])
    author = StringField('Author', validators=[data_required()])
    rating = RadioField('Rating')
    review = TextAreaField('Review', validators=[data_required()])
    submit = SubmitField('Post')

然后使用 sqlAlchemy 将信息包含到数据库中。这是具有以下评级的书类:

class Book(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(100), nullable=False)
    author = db.Column(db.String(100), nullable=False)
    rating = db.Column(db.Integer)
    review = db.Column(db.String(400), nullable=False)
    date_posted = db.Column(db.DateTime, nullable=False,
                            default=datetime.utcnow)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)

    def __repr__(self):
        return f"Book('{self.title}','{self.author}','{self.rating}','{self.review}','{self.date_posted}', '{self.reader}')"

这是 routes.py 的一部分。

@app.route("/create_post", methods=['GET', 'POST'])
@login_required
def new_post():
    form = PostForm()
    if form.validate_on_submit():
        book = Book(title=form.title.data,author = form.author.data, rating=form.rating.data, review=form.review.data, reader=current_user)
        db.session.add(book)
        db.session.commit()
        flash('Your post has been created!', 'success')
        return redirect('/home')
    return render_template('create_post.html', title='New Post', form=form, legend='New Post')

我的问题是 - 如何获取 RadioField 的输入以便将其添加到数据库中?

标签: python-3.xflask-sqlalchemyflask-wtforms

解决方案


推荐阅读