我正在使用flask将电子邮件发送给在联系页面中提交表单的用户。
我尝试自己进行测试,即使我填写了整个表格。每当我点击提交时,都会收到一个验证错误,提示我必须填写表格。在我的日志中,它说我得到200分,这表示该帖子成功了。
这是代码:
route.py
from flask import Flask, render_template, request, flash
from forms import ContactForm
from flask.ext.mail import Message, Mail
mail = Mail()
app = Flask(__name__)
app.secret_key = 'development key'
app.config["MAIL_SERVER"] = "smtp.gmail.com"
app.config["MAIL_PORT"] = 465
app.config["MAIL_USE_SSL"] = True
app.config["MAIL_USERNAME"] = '[email protected]'
app.config["MAIL_PASSWORD"] = '*********'
mail.init_app(app)
app = Flask(__name__)
app.secret_key = 'development key'
@app.route('/contact', methods=['GET', 'POST'])
def contact():
form = ContactForm()
if request.method == 'POST':
if form.validate() == False:
flash('All fields are required.')
return render_template('contact.html', form=form)
else:
msg = Message(form.subject.data, sender="[email protected]")
msg.body = """
From: %s <%s>
%s
""" % (form.name.data, form.email.data, form.message.data)
mail.send(msg)
return 'Form posted.'
elif request.method == 'GET':
return render_template('contact.html', form=form)
Forms.py
from flask.ext.wtf import Form
from wtforms import Form, TextField, TextAreaField, SubmitField, validators, ValidationError
class ContactForm(Form):
name = TextField("Name", [validators.Required("Please Enter Your Name")])
email = TextField("Email",[validators.Required("Please enter your email address"), validators.email("Please enter your email address")])
subject = TextField("Subject", [validators.Required("Please enter a subject.")])
message = TextAreaField("Message", [validators.Required("Please enter a message.")])
submit = SubmitField("Send")
参考方案
这是一个例子:
<form action="mailto:[email protected]" method="post" enctype="text/plain">
<tr>
<td>Code name</td>
<td><input type='text' name='codename' placeholder="name your code" size=20 /></td>
</tr>
<tr>
<td>Name</td>
<td><input type='text' name='name' maxlength=20 size=20 /></td>
</tr>
<tr>
<td>Code</td><br/>
<td><textarea name='code' rows=4 cols=50></textarea></td>
</tr>
<tr>
<td></td>
<td><input type='submit' value='Submit Python Code' /></td>
</tr>
</form>
根据您的需要进行编辑。请记住,您还必须更改烧瓶代码才能使用此代码。
Python 3运算符>>打印到文件 - python我有以下Python代码编写项目的依赖文件。它可以在Python 2.x上正常工作,但是在使用Python 3进行测试时会报告错误。depend = None if not nmake: depend = open(".depend", "a") dependmak = open(".depend.mak…
python JSON对象必须是str,bytes或bytearray,而不是'dict - python在Python 3中,要加载以前保存的json,如下所示:json.dumps(dictionary)输出是这样的{"('Hello',)": 6, "('Hi',)": 5}当我使用json.loads({"('Hello',)": 6,…
Python ElementTree:在循环中替换元素 - python我正在尝试创建一个脚本,该脚本循环创建一个xml文件,并为两个元素增加值。 (使用netaddr的IP地址,以及递增的tag / member元素,tag01-tag10)from netaddr import IPNetwork import xml.dom.minidom import lxml.etree as etree import xml.etr…
Python Pandas导出数据 - python我正在使用python pandas处理一些数据。我已使用以下代码将数据导出到excel文件。writer = pd.ExcelWriter('Data.xlsx'); wrong_data.to_excel(writer,"Names which are wrong", index = False); writer.…
在同一页烧瓶上显示结果 - python我试图在同一页面上显示搜索结果。当用户搜索输入内容发布到路线仪表板并且该路线返回JSON对象时,如何在实现卡中显示这些结果?我正在尝试使用AJAX和jquery。@app.route('/dash',methods=['GET','POST']) @login_required def dashbo…