2013-10-14 51 views
1

我在Flask中創建聯繫人表單,但它不起作用。它給出了錯誤NameError:全局名稱 '的ContactForm' 沒有定義如何解決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) 

我如何可以解決這個問題呢?

+4

@Brar:「無法導入XXX」是一種非常常見的Python錯誤消息,通常與您的代碼無關,而是您的環境設置不正確(換句話說,您沒有正確安裝軟件包,或者你把它安裝在錯誤的地方)。你有沒有正確安裝Flask-WTF? –

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

首先,您是否安裝了flask-wtf?
並試試這個:form = ContactForm(request.form)

相關問題