简体   繁体   English

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

[英]How to resolve a NameError: global name 'ContactForm' is not defined

I create a contact form in Flask, but it's not working. 我在Flask中创建了一个联系表单,但是它不起作用。 It gives the error NameError: global name 'ContactForm' is not defined 它给出错误NameError:全局名称“ ContactForm”未定义

The custom form is : 自定义形式为:

<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 is: route.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)

How may I resolve the problem? 我该如何解决该问题?

Create a new file called forms.py and insert the below code in there. 创建一个名为forms.py的新文件,并在其中插入以下代码。 Then your code should work. 然后您的代码应该工作了。

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")

firstly , do you have flask-wtf installed ? 首先,您是否安装了flask-wtf?
and try this : form = ContactForm(request.form) 并尝试: form = ContactForm(request.form)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM