2016-08-11 17 views
-1

Flaskでエラーメッセージを表示するのに問題があります。 これは青写真に関連していると思われます。以前は、views.pyに見られるロジックはユーザーの青写真にありましたが、その後私はそれを主な青写真に移植しました。とにかく、その後、私はエラーメッセージを表示することができません。フォーム検証メッセージが表示されていません - Flask

私はあると私はトラブルを抱えていると思う特定の行:/ views.py メイン

self.email.errors.append( "このメールはすでに登録されている")

プロジェクト/
@main_blueprint.route('/', methods=['GET', 'POST']) 
@main_blueprint.route('/<referrer>', methods=['GET', 'POST']) 
def home(referrer=None): 

    form = RegisterForm(request.form) 

    # prepares response 
    resp = make_response(render_template('main/index.html', form=form)) 
    if form.validate_on_submit(): 
     do_stuff() 
    return resp 

プロジェクト/メイン/ index.htmlを

<h1>Please Register</h1> 
<br> 
<form class="" role="form" method="post" action=""> 
    {{ form.csrf_token }} 
    {{ form.email(placeholder="email") }} 
    <span class="error"> 
     {% if form.email.errors %} 
     {% for error in form.email.errors %} 
      {{ error }} 
     {% endfor %} 
     {% endif %} 
    </span> 
    </p> 
    <button class="btn btn-success" type="submit">Register!</button> 
    <br><br> 
    <p>Already have an account? <a href="/login">Sign in</a>.</p> 
</form> 

プロジェクト/ユーザー/ forms.py

class RegisterForm(Form): 
     email = TextField(
      'email', 
      validators=[DataRequired(), Email(message=None), Length(min=6, max=40)]) 

def validate(self): 
    print "validating" 
    initial_validation = super(RegisterForm, self).validate() 
    if not initial_validation: 
     print "not initial validation" 
     return False 
    user = User.query.filter_by(email=self.email.data).first() 
    print user 
    if user: 
     print self 
     print "error, email already registered" 
     self.email.errors.append("This Email is already registered") 
     return False 
    return True 

デバッグしようとすると、これがあるから 'プリントユーザー' の値:それは動作するようになった0x7fa436807698

+0

あなたのHTMLテンプレートを提供してください、あなたのRequest.Form [「何か」]のように見えるあなたは単にあなたの変数「フォーム」でことを目的に割り当てることを決めたと宣言されていません0x7fa436807698、あなたはノーあなたのオブジェクトから個々の要素を取り出すt – glls

+0

さて、私は先に進んでhtmlテンプレートを更新しました – orangeandgrey

答えて

0

project.user.forms.RegisterFormオブジェクト、@glls、あなたcorrect.Rewroteは、ように、コードされた:

@main_blueprint.route('/', methods=['GET', 'POST']) 
@main_blueprint.route('/<referrer>', methods=['GET', 'POST']) 
def home(referrer=None): 

    # prepares response 
    resp = make_response(render_template('main/index.html', form=form)) 
    if form.validate_on_submit(): 
     do_stuff() 

    form = RegisterForm(request.form) 

    return resp 
+0

あなたは歓迎です – glls

関連する問題