#python-3.x #flask-sqlalchemy #flask-wtforms
Вопрос:
Я пишу веб-приложение, которое может отслеживать книги, которые я прочитал. Чтобы зарегистрировать новую книгу, пользователю также необходимо присвоить ей рейтинг, который отображается в виде звезды (с использованием 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 и что меня интересует, так это рейтинг — радиополе
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')
Мой вопрос в том, как я могу получить ввод радиополя, чтобы добавить его в базу данных?