html - 自动完成 Flask wtforms
问题描述
我想使用数量和商品价格自动更新我的总金额字段?有没有办法使用没有javascript的烧瓶来做到这一点?我希望在输入数量和商品价格时更新总金额。
class ItemForm(FlaskForm):
item = StringField('Item')
quantity=IntegerField('Quantity')
item_price=IntegerField('Item Price')
class Meta:
csrf = False
class CostumerForm(FlaskForm):
costumer_name=StringField('Costumer Name: ')
item_detail = FieldList(FormField(ItemForm), min_entries=1)
add_item = SubmitField(label='Add Item')
remove_item = SubmitField(label='Remove Item')
total_amount=IntegerField('Total Amount')
paid_amount=IntegerField('Paid Amount')
submit=SubmitField('Submit')
proceed=SubmitField('Proceed')
@app.route('/costumer',methods=['GET','POST'])
@login_required
def costumer():
form=CostumerForm()
if form.add_item.data:
form.item_detail.append_entry()
return render_template('costumer.html', form=form)
if form.remove_item.data:
form.item_detail.pop_entry()
return render_template('costumer.html', form=form)
if form.validate_on_submit():
item=breakdown(form.item_detail.data)[0]
quantity=breakdown(form.item_detail.data)[1]
item_price=breakdown(form.item_detail.data)[2]
amount=breakdown(form.item_detail.data)[3]
total_amount=breakdown(form.item_detail.data)[4]
remaning_amount=total_amount-form.paid_amount.data
sales=Costumer(admin_id=current_user.id,item_id=item,
costumer_name=form.costumer_name.data,quantity=quantity,
item_price=item_price,amount=amount,total_amount=total_amount,
paid_amount=form.paid_amount.data,remaning_amount=remaning_amount)
db.session.add(sales)
db.session.commit()
return redirect(url_for('salesvoucher'))
return render_template('costumer.html',form=form)
costumer.html
销售 {{form.hidden_tag()}} {{form.costumer_name.label}}{{form.costumer_name(class='form-control input-group-ig',placeholder='Costumer Name')}} 商品数量 商品表单中字段的价格 {%。item_detail %} {% for f in field%} {{ f(class='form-control') }} {% endfor %} {% endfor %} {{ form.add_item(class='btn btn-primary') }} {{ form.remove_item(class='btn btn-danger') }} {{form.proceed(class='btn btn-primary')}} ```) }} {% endfor %} {% endfor %} {{ form.add_item(class='btn btn-primary') }} {{ form.remove_item(class='btn btn-danger') }} {{form .proceed(class='btn btn-primary')}} ```) }} {% endfor %} {% endfor %} {{ form.add_item(class='btn btn-primary') }} {{ form.remove_item(class='btn btn-danger') }} {{form .proceed(class='btn btn-primary')}} ```remove_item(class='btn btn-danger') }} {{form.proceed(class='btn btn-primary')}} ```remove_item(class='btn btn-danger') }} {{form.proceed(class='btn btn-primary')}} ```
解决方案
没门。即使您仅在前端进行更新,也必须使用 javascript。
推荐阅读
- r - 两个不同数据集之间的哪些变量不同?
- android - 登录后显示空白页面而不是正确的布局。安卓
- asp.net-core - 在 ASP.NET Core 中使用区域时找不到 favicon.ico
- google-cloud-storage - 无法使用带有条件的 StorageAdmin 角色查询 GCS 存储桶
- javascript - 通过 Sequelize 过滤相关模型
- asynchronous - 为什么即使在输入 await 关键字后,我的应用程序仍会显示 0?
- pandas - pandas - 通过从不同的行计算来计算新列
- c# - 关注外部应用程序 (Chrome)
- node.js - 如何在节点 js 服务器上接收客户端发送的身份验证令牌?
- python - Flask Navigation 和额外的 url 参数