Мне нужна помощь с моим приложением Flask. У меня есть страница с FlaskForm, которая рассчитывает прибыль от продажи продукта. Идея в том, что если страница загружается напрямую или по ссылке, данные для расчетов получаются из базы данных. Но затем пользователь может изменить некоторые значения в FlaskForm и отправить их для получения новых вычислений. И когда страница загружается после отправки формы, часть данных должна быть получена из формы.
Вот мой код для обработки URL-адреса этой страницы:
А вот снимок экрана страницы: страница желает FlaskForm
Моя идея состоит в том, что если форма проверяется при отправке, то форма передается в функция loadOzonProdUEData для получения части необходимых данных из формы. А если это не форма, она не передается, а затем функция loadOzonProdUEData загружает все данные из базы данных.
Проблема в том, что форма никогда не проверяется при отправке, и я не знаю, почему. Также я думаю, что это может быть не очень хорошая идея, потому что, когда форма не проверяется в случае, если с ней что-то не так, расчет все равно будет обрабатываться с использованием базы данных формы данных, но в этом случае лучше получить сообщение об ошибке, чтобы исправить то, что не так. .
Пожалуйста, посоветуйте, как лучше сделать то, что мне нужно.
Мне нужна помощь с моим приложением Flask. У меня есть страница с FlaskForm, которая рассчитывает прибыль от продажи продукта. Идея в том, что если страница загружается напрямую или по ссылке, данные для расчетов получаются из базы данных. Но затем пользователь может изменить некоторые значения в FlaskForm и отправить их для получения новых вычислений. И когда страница загружается после отправки формы, часть данных должна быть получена из формы. Вот мой код для обработки URL-адреса этой страницы: [code]@app.route('/ozon-unit-economy', methods=['GET', 'POST']) def ozonUnitEconomy(): ozonProductId = request.args.get('id') productData = dict()
return render_template('ozon-unit-economy.html', title='Юнит-экономика товара Ozon', form=form, productData = productData, miscData = miscData, calcResults = calcResults) [/code] А вот форма: [code]class ozonUnitEcForm(FlaskForm): date = DateField('Дата', validators=[DataRequired()]) price = IntegerField('Цена (р.)', validators=[DataRequired(), NumberRange(min=1)]) salePrice = IntegerField('Цена по акции (р.)', validators=[NumberRange(min=1)]) purchasePrice = DecimalField('Закупочная цена (р.)', validators=[DataRequired(), NumberRange(min=0.01)]) purchaseDiscount = DecimalField('Скидка поставщика (%)', validators=[NumberRange(min=0, max=99.99)]) factoring = BooleanField('Факторинг') factoringComRate = DecimalField('Комиссия за факторинг (%)', validators=[NumberRange(min=0, max=99.99)]) fastMoney = BooleanField('Гибкий график выплат') payDelay = QuerySelectField('Отсрочка выплат', query_factory=lambda: db.session.execute( db.select(ozonPayDelay)).scalars(), get_label='delay') crr = DecimalField('ДРР (%)', validators=[DataRequired(), NumberRange(min=0, max=99.99)]) sellerInst = BooleanField('Рассрочка продавца') sellerBonusRate = IntegerField('Бонусы продавца (%)', validators=[DataRequired(), NumberRange(min=1)]) fboExp = IntegerField('Стоимость упаковки FBO (р.)', validators=[DataRequired(), NumberRange(min=0)]) fbsExp = IntegerField('Стоимость упаковки FBS (р.)', validators=[DataRequired(), NumberRange(min=0)]) realFbsExp = IntegerField('Стоимость упаковки realFBS (р.)', validators=[DataRequired(), NumberRange(min=0)]) fboWarehouseFrom = QuerySelectField('Склад отправки партии товара', query_factory=lambda: db.session.execute( db.select(ozonWarehouse)).scalars(), get_label='name') fboWarehouseTo = QuerySelectField('Склад доставки партии товара', query_factory=lambda: db.session.execute( db.select(ozonWarehouse)).scalars(), get_label='name') fboCrossDockPackage = QuerySelectField('Упаковка для кросс-докинга', query_factory=lambda: db.session.execute( db.select(ozonCrossDockingPackage)).scalars(), get_label='name') fboTurnover = IntegerField('Оборачиваемость на складах OZON (дн.)', validators=[DataRequired(), NumberRange(min=0)]) fboLocalIndex = IntegerField('Индекс локализации (%)', validators=[DataRequired(), NumberRange(min=0, max=99)]) fbsDropOffCost = IntegerField('Стоимость обработки отправления FBS (р.)', validators=[DataRequired(), NumberRange(min=0)]) realFbsCost = IntegerField('Стоимость доставки на realFBS (р.)', validators=[DataRequired(), NumberRange(min=0)]) realFbsComp = IntegerField('Компенсация доставки на realFBS (р.)', validators=[DataRequired(), NumberRange(min=0)]) fboReturnRate = DecimalField('Процент возвратов FBO (%)', validators=[DataRequired(), NumberRange(min=0, max=99.99)]) fbsReturnRate = DecimalField('Процент возвратов FBS (%)', validators=[DataRequired(), NumberRange(min=0, max=99.99)]) realFbsReturnRate = DecimalField('Процент возвратов realFBS (%)', validators=[DataRequired(), NumberRange(min=0, max=99.99)]) fboReturnExp = IntegerField('Стоимость обработки возврата FBO (р.)', validators=[DataRequired(), NumberRange(min=0)]) fbsReturnExp = IntegerField('Стоимость обработки возврата FBS (р.)', validators=[DataRequired(), NumberRange(min=0)]) realFbsReturnExp = IntegerField('Стоимость обработки возврата realFBS (р.)', validators=[DataRequired(), NumberRange(min=0)]) submit = SubmitField('Рассчитать') [/code] А вот снимок экрана страницы: страница желает FlaskForm Моя идея состоит в том, что если форма проверяется при отправке, то форма передается в функция loadOzonProdUEData для получения части необходимых данных из формы. А если это не форма, она не передается, а затем функция loadOzonProdUEData загружает все данные из базы данных. Проблема в том, что форма никогда не проверяется при отправке, и я не знаю, почему. Также я думаю, что это может быть не очень хорошая идея, потому что, когда форма не проверяется в случае, если с ней что-то не так, расчет все равно будет обрабатываться с использованием базы данных формы данных, но в этом случае лучше получить сообщение об ошибке, чтобы исправить то, что не так. . Пожалуйста, посоветуйте, как лучше сделать то, что мне нужно.