我一直在看这个问题,尝试让这个表单识别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" />
如果我遗漏任何有助于解决此问题的信息,请告诉我。
编辑:这是EmailForm
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')
答案 0 :(得分:0)
尝试改变这些事情:
从method = post到method =“POST”
从form = EmailForm()到form = EmailForm(request.form)
告诉我你是否还有错误