如何解决NameError:未定义全局名称“ContactForm”

时间:2013-10-14 05:46:49

标签: python flask flask-wtforms

我在Flask中创建了一个联系表单,但它不起作用。它给出了错误NameError:全局名称'ContactForm'未定义

自定义表单是:

<form action="{{ url_for('contact') }}" method=post>
    {{ form.hidden_tag() }}

    {{ form.name.label }}
    {{ form.name }}

    {{ form.email.label }}
    {{ form.email }}

    {{ form.subject.label }}
    {{ form.subject }}

    {{ form.message.label }}
    {{ form.message }}

    {{ form.submit }}
  </form>

routes.py是:

from flask import Flask, render_template
from forms import ContactForm
app = Flask(__name__)     

def contact():
    form = ContactForm()

    if request.method == 'POST':
        return 'Form posted.'

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

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

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

创建一个名为forms.py的新文件,并在其中插入以下代码。那么你的代码应该可以工作。

from flask.ext.wtf import Form

from wtforms import TextField, TextAreaField, SubmitField, validators


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

答案 1 :(得分:0)

首先,你是否安装了flask-wtf? 并试试这个:form = ContactForm(request.form)