首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >烧瓶-邮件:空邮件

烧瓶-邮件:空邮件
EN

Stack Overflow用户
提问于 2015-10-27 18:37:13
回答 1查看 405关注 0票数 0

目前,我正在尝试创建使用烧瓶,烧瓶邮件和烧瓶-WTF联系页面。消息正在发送,但我只收到“从:无随机字符串”。你能告诉我我做错了什么吗?

代码语言:javascript
运行
复制
server.py:

from flask import Flask, render_template, request
from forms import ContactForm
from flask_mail import Mail, Message

mail = Mail()

app = Flask(__name__)
app.secret_key = 'developerKey'

app.config["MAIL_SERVER"] = "smtp.gmail.com"
app.config["MAIL_PORT"] = 465
app.config["MAIL_USE_SSL"] = True
app.config["MAIL_USERNAME"] = '****@gmail.com'
app.config["MAIL_PASSWORD"] = '****'

mail.init_app(app)

@app.route('/', methods=['GET', 'POST'])
def view():
  return render_template('index.html')

@app.route('/contact', methods=['GET', 'POST'])
def contact():
  form = ContactForm()

  if request.method == 'POST':
      msg = Message("Portfolio", sender='contact@example.com', recipients=['****@gmail.com'])
      msg.body = """From: %s <%s> %s %s""" % (form.name.data, form.email.data, form.message.data, "Random string")
      mail.send(msg)
      return 'Form posted.'

  elif request.method == 'GET':
    return render_template('contact.html', form=form)


app.debug = True

if __name__ == '__main__':
    app.run()

forms.py

from wtforms import Form, TextField, TextAreaField,SubmitField,validators

class ContactForm(Form):
  name = TextField("Name", [validators.Required()])
  email = TextField("Email", [validators.Required()])
  message = TextAreaField("Message", [validators.Required()])
  submit = SubmitField("Send", [validators.Required()])

contact.html
<body>
    <h1>Contact Form:</h1>

    <form action="/contact" method="post">
          {{ form.hidden_tag }}
        <p>
          {{ form.name.label }}
          {{ form.name }}
        </p>
        <p>
          {{ form.email.label }}
          {{ form.email }}
        </p>
        <p>
          {{ form.message.label }}
          {{ form.message }}
        </p>
        <p>
          {{ form.submit }}
        </p>
      </form>
</body>

{{from.hidden.tag}}只起作用,不带括号。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-27 18:50:32

消息不是空的,表单值是空的。它们是空的,因为表单没有验证(而且您甚至没有检查它的有效性)。它是无效的,因为您没有将request.form数据传递给表单。这不是自动发生的,hidden_tag也不可用,因为您继承的是wtforms.Form而不是flask_wtf.Form

代码语言:javascript
运行
复制
from flask_wtf import Form

class ContactForm(Form):
    ...

@app.route('/contact', methods=['GET', 'POST'])
def contact():
    form = ContactForm()

    if form.validate_on_submit():
        # send a message and return something

    return render_template('contact.html', form=form)

一定要在模板中调用form.hidden_tag(),因为没有隐藏的CSRF字段,烧瓶-WTF的表单将不会验证。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33375978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档