【发布时间】:2019-07-22 21:14:59
【问题描述】:
我有一个简单的 Flask/WTForm/Jinja2 定价计算应用程序 - 由简单的值(十进制、整数和选取值)表格(表格)和计算按钮以及计算价格的闪烁消息组成。
当用户点击发送按钮时,要求能够通过电子邮件将输入的值和计算结果发送出去。我正在寻找一种快速而肮脏的方法来做到这一点。
由于我已经生成了渲染表单 HTML(包括价格)以从 Flask 中的 POST 路由回调返回,我想我可以抓住这个渲染输出并在需要时通过电子邮件发送出去。所以我有:
@app.route("/", methods=['GET', 'POST'])
@auth.login_required
def price_calc():
form = PriceForm(request.form)
calc_output = ""
if request.method == 'POST':
if form.validate():
# Calc the price and show it
calc_output = ....
# If user hit 'Send' submit button
if request.form['submit'] == 'send':
send_outputs = True
# Generate the rendered form
render_result = render_template('app.html', calc_output = calc_output, form=form)
if send_outputs:
# TODO: Need to convert this to fixed 'snapshot' HTML for email use
generate_email(user, render_result)
return render_result
这可行,值等都会显示出来,但 HTML 电子邮件(当然)是表单的完整“活动”副本。我的意思是当我收到电子邮件时,我可以修改值、更改下拉列表等。
我想将其转换为 HTML 的静态快照(只读)块,其值在捕获时锁定为状态。有什么简单的方法可以做到这一点?我想我可以解析所有 HTML 元素并以某种方式将它们设为只读?
或者,可能有一种方法可以修复通过电子邮件发送的 HTML 表单(只读)?
(我还需要去掉一些文本和提交按钮,但我猜这对于一些正则表达式/Beautiful Soup 解析来说是微不足道的)
谢谢!
【问题讨论】:
标签: html forms email flask wtforms