На сайте есть возможность добавлять сорта кофе, а так же рецепты к каждому сорту (в форме создания рецепта нужно указать сорт кофе, который понадобится для приготовления). Проблема заключается в том, что если запустить веб-приложение командой
flask run
, создать новый сорт, а затем попытаться создать рецепт, то в списке сортов нового не будет, а появится он только после перезапуска сервера.
Это код страницы с формой добавления нового сорта:
@app.route('/new_sort', methods=['GET', 'POST'])
@login_required
def new_sort():
if current_user.email not in app.config["ADMINS"]:
return redirect(url_for('index'))
form = SortForm()
if form.validate_on_submit():
sort = Sort(title=form.title.data,
user_id=current_user.id,
bouquet=form.bouquet.data,
description=form.description.data)
db.session.add(sort)
db.session.commit()
flash('Новый сорт добавлен!')
return redirect(url_for('index'))
return render_template('sort_form.html', title='Новый сорт', form=form, ADMIN_EMAILS=Config.ADMINS)
Аналогично для рецепта:
@app.route('/new_recipe', methods=['GET', 'POST'])
@login_required
def new_recipe():
form = RecipeForm()
if form.validate_on_submit():
recipe = Recipe(title=form.title.data,
user_id=current_user.id,
sort_id=Sort.query.filter_by(title=str(form.sort_id.data)).first().id,
coffee_mass=form.coffee_mass.data,
water_mass=form.water_mass.data,
water_temp=form.water_temp.data,
grinding=form.grinding.data,
acidity=form.acidity.data,
tds=form.tds.data,
body=form.body.data)
db.session.add(recipe)
db.session.commit()
flash('Новый рецепт добавлен!')
return redirect(url_for('index'))
return render_template('recipe_form.html', title='Новый рецепт', form=form, ADMIN_EMAILS=Config.ADMINS)
А вот класс
RecipeForm
(
sort_id
- часть формы, который не обновляется в процессе работы сервера):
class RecipeForm(FlaskForm):
title = StringField('Название рецепта:', validators=[DataRequired(EMPTY_FIELD)])
sort_id = SelectField("Выберите название кофе:", validators=[DataRequired(EMPTY_FIELD)],
choices=Sort.query.all())
coffee_mass = DecimalField("Масса кофе, г:", validators=[DataRequired(EMPTY_FIELD)])
water_mass = IntegerField("Масса воды, мл:", validators=[DataRequired(EMPTY_FIELD)])
water_temp = IntegerField("Температура воды, C:", validators=[DataRequired(EMPTY_FIELD)])
acidity = IntegerField("Кислотность (оцените сами от 0 до 10):")
tds = IntegerField("Насыщенность (оцените сами от 0 до 10):")
grinding = DecimalField("Помол:", validators=[DataRequired(EMPTY_FIELD)])
body = TextAreaField("Шаги", validators=[DataRequired(EMPTY_FIELD)])
submit = SubmitField("Добавить"