2013-10-14 3 views
1

플라스크에 연락처 양식을 만들었지 만 작동하지 않습니다. 전역 이름 '것은 ContactForm'정의되지 않은NameError 문제를 해결하는 방법 : 전역 이름 'ContactForm'이 정의되어 있지 않습니다.

사용자 지정 양식은 다음과 같습니다 : 그것은 오류 나가서 설명하자면 NameError를 제공

<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 : "Can not import XXX"는 코드와는 아무런 관련이없는 꽤 일반적인 파이썬 오류 메시지입니다. 대신 환경이 올바르게 설정되지 않았습니다. 즉, 패키지를 올바르게 설치하지 않았습니다. 또는 잘못된 위치에 설치 한 경우). 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)

관련 문제