1

Flask でお問い合わせフォームを作成しましたが、機能しません。エラー NameError: global name 'ContactForm' is not defined が表示されます

カスタム フォームは次のとおりです。

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

どうすれば問題を解決できますか?

4

2 に答える 2

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")
于 2013-10-16T04:55:25.623 に答える
0

まず、flask-wtf がインストールされていますか?
これを試してください: form = ContactForm(request.form)

于 2013-10-14T20:50:09.777 に答える