2017-12-03 24 views
0

코드는 매우 자명합니다. 나중에 사용할 수 있도록 FlaskForm 하위 클래스에 변수를 전달하고 싶습니다.FlaskForm (WTForms) 내에서 변수를 전달하고 사용하십시오.

from flask import Flask, render_template_string 
from flask_wtf import FlaskForm 
from wtforms import StringField 
from flask_wtf.csrf import CSRFProtect 


app = Flask(__name__) 
spam = 'bar' 
app.secret_key = 'secret' 
csrf = CSRFProtect(app) 

@app.route('/') 
def index(): 
    eggs = spam 
    form = FooForm(eggs) 
    return render_template_string(
    ''' 
    {{ form.bar_field.label }} {{ form.bar_field }} 
    ''',form = form) 

class FooForm(FlaskForm): 
    def __init__(self, bar): 
     super(FooForm, self).__init__() 
     self.bar = bar 
    bar_field = StringField("Label's last word is 'bar': {0}".format(self.bar)) 

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

내가 대신 원하는 내가 달성하려면 어떻게

line 22, in FooForm 
    bar_field = StringField("Label's last word is 'bar': {0}".format(self.bar)) 
NameError: name 'self' is not defined 

무엇거야?

답변

0

bar_field = StringField("Label's last word is 'bar': {0}".format(self.bar))() 메소드 내부에 넣으십시오. 사용 :

class FooForm(FlaskForm): 
def __init__(self, bar): 
    super(FooForm, self).__init__() 
    self.bar = bar 
    self.bar_field = StringField("Label's last word is 'bar': {0}".format(self.bar)) 
+0

이것은 내가 달성하기를 원하는 것이 아닙니다. 나는 FlaskForm을 위해 bar_field를 원하지 않는다. 나는 FooForm을위한 bar_field를 원한다. – user8491711

+0

제안 사항을 직접 사용해 보셨습니까? 'jinja2.exceptions.UndefinedError : '__main __. FooForm object'에 'bar_field'속성이 없습니다. – user8491711

+0

다음에 'self.bar_field = StringField ....'를 입력하십시오. –