Создайте форму звездного рейтинга в Flask: методы и примеры кода

Чтобы создать форму звездного рейтинга в Flask, вы можете использовать различные методы. Вот несколько примеров кода:

  1. Использование HTML и JavaScript:
    HTML-шаблон (rating.html):

    <form action="/submit-rating" method="POST">
     <div class="rating">
       <input type="radio" id="star5" name="rating" value="5" /><label for="star5"></label>
       <input type="radio" id="star4" name="rating" value="4" /><label for="star4"></label>
       <input type="radio" id="star3" name="rating" value="3" /><label for="star3"></label>
       <input type="radio" id="star2" name="rating" value="2" /><label for="star2"></label>
       <input type="radio" id="star1" name="rating" value="1" /><label for="star1"></label>
     </div>
     <input type="submit" value="Submit" />
    </form>

    Маршрут Flask (app.py):

    from flask import Flask, render_template, request
    app = Flask(__name__)
    @app.route('/submit-rating', methods=['POST'])
    def submit_rating():
       rating = request.form['rating']
       # Process the rating here (e.g., save it to a database)
       return 'Rating submitted: ' + rating
    @app.route('/')
    def index():
       return render_template('rating.html')
    if __name__ == '__main__':
       app.run()
  2. Использование Flask-WTF и WTForms:
    Установите Flask-WTF с помощью pip: pip install Flask-WTF

    Маршрут Flask (app.py):

    from flask import Flask, render_template
    from flask_wtf import FlaskForm
    from wtforms import RadioField
    from wtforms.validators import InputRequired
    app = Flask(__name__)
    app.config['SECRET_KEY'] = 'your-secret-key'
    class RatingForm(FlaskForm):
       rating = RadioField('Rating', choices=[('5', '5 stars'), ('4', '4 stars'), ('3', '3 stars'), ('2', '2 stars'), ('1', '1 star')],
                           validators=[InputRequired()])
    @app.route('/', methods=['GET', 'POST'])
    def index():
       form = RatingForm()
       if form.validate_on_submit():
           # Process the rating here (e.g., save it to a database)
           return 'Rating submitted: ' + form.rating.data
       return render_template('rating.html', form=form)
    if __name__ == '__main__':
       app.run()

Не забудьте создать в проекте каталог «шаблоны» и поместить в него файл «rating.html».