我一直在看这个,试图让这个表单识别 POST,但它会生成 404 错误。
意见
from flask import *
from dockteck.models import EmailForm
from dockteck import app
# Page Routing
@app.route('/')
def main():
return render_template('index.html')
@app.route('/contact', methods=['GET', 'POST'])
def contact():
form = EmailForm()
if request.method == 'POST':
return "Message Sent"
elif request.method == 'GET':
return render_template('contact.html', form=form)
@app.route('/portfolio')
def portfolio():
return render_template('portfolio.html')
我有一个简单的联系功能,在请求页面 GET 时工作正常。为页面 GET 加载以下联系页面:
{% extends "template.html" %}
{% block content %}
<h1>Contact Me</h1>
<form action="{{ url_for('contact') }}" method=post>
<div class="row">
<div class="large-4 columns">
{{ form.name.label }}
{{ form.name }}
</div>
<div class="large-4 columns">
{{ form.email.label }}
{{ form.email }}
</div>
<div class="large-4 columns">
<div class="row collapse">
{{ form.subject.label }}
{{ form.subject }}
</div>
</div>
</div>
<div class="row">
<div class="large-12 columns">
{{ form.comment.label }}
{{ form.comment }}
</div>
</div>
<div class="row">
<div class="large-6 columns">
{{ form.submit }}
</div>
</div>
</form>
{% endblock %}
提交此表单后,它会返回 404 错误页面,因为它通过 POST 请求联系。此外,通过 firefox 开发工具检查,它显示该页面发布了正确的页面/联系人,但由于 404 错误而超时,并给出了以下附加消息:
未声明 HTML 文档的字符编码。如果文档包含 US-ASCII 范围之外的字符,则文档将在某些浏览器配置中呈现乱码。页面的字符编码必须在文档或传输协议中声明。
在模板文件中,我尝试了一些不同的声明,但似乎没有什么区别:
<!DOCTYPE html>
<!--[if IE 8]> <html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta http-equiv="Content-Type" content="text/html"; charset="utf-8" />
如果我遗漏任何有助于解决此问题的内容,请告诉我。
编辑:这是电子邮件表格
from wtforms import Form, TextField, TextAreaField, validators, SubmitField
class EmailForm(Form):
name = TextField('Full Name')
email = TextField('Email Address')
subject = TextField('Subject')
comment = TextAreaField('Comments')
submit = SubmitField('Send message')