0

我一直在看这个,试图让这个表单识别 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')
4

1 回答 1

0

尝试更改这些内容:
从 method=post 到 method="POST"
从 form = EmailForm() 到 form = EmailForm(request.form)

告诉我你是否还有任何错误

于 2013-08-27T04:28:54.383 回答