2012-11-27 13 views
6

मैं WTForm सत्यापन त्रुटियों को फ्लैश करने का प्रयास कर रहा हूं। मैं this snippet पाया और थोड़ा इसे संशोधित:फ्लास्क-डब्ल्यूटीएफफ़ॉर्म: फ्लैश त्रुटियों को प्रदर्शित नहीं करता है

def flash_errors(form): 
    """Flashes form errors""" 
    for field, errors in form.errors.items(): 
     for error in errors: 
      flash(u"Error in the %s field - %s" % (
       getattr(form, field).label.text, 
       error 
      ), 'error') 

यहाँ मेरी प्रपत्र वर्गों में से एक है:

class ContactForm(Form): 
    """Contact form""" 
    # pylint: disable=W0232 
    # pylint: disable=R0903 
    name = TextField(label="Name", validators=[Length(max=35), Required()]) 
    email = EmailField(label="Email address", 
         validators=[Length(min=6, max=120), Email()]) 
    message = TextAreaField(label="Message", 
          validators=[Length(max=1000), Required()]) 
    recaptcha = RecaptchaField() 

और दृश्य:

@app.route("/contact/", methods=("GET", "POST")) 
def contact(): 
    """Contact view""" 
    form = ContactForm() 
    flash_errors(form) 
    if form.validate_on_submit(): 
     sender = "%s <%s>" % (form.name.data, form.email.data) 
     subject = "Message from %s" % form.name.data 
     message = form.message.data 
     body = render_template('emails/contact.html', sender=sender, 
           message=message) 
     email_admin(subject, body) 
     flash("Your message has been sent. Thank you!", "success") 

    return render_template("contact.html", 
          form=form) 

हालांकि, कोई त्रुटि मान्यता विफलताओं पर दिखाया जाता है। मुझे पता है कि मेरे रूप और टेम्पलेट ठीक काम करते हैं, क्योंकि डेटा वैध होने पर मेरा सफलता संदेश चमकता है। गलत क्या है?

उत्तर

10

कोई त्रुटि अभी तक क्योंकि आप प्रपत्र संसाधित नहीं की है अभी तक

कोशिश validate_on_submit विधि

@app.route("/contact/", methods=("GET", "POST")) 
def contact(): 
    """Contact view""" 
    form = ContactForm() 
    if form.validate_on_submit(): 
     sender = "%s <%s>" % (form.name.data, form.email.data) 
     subject = "Message from %s" % form.name.data 
     message = form.message.data 
     body = render_template('emails/contact.html', sender=sender, 
           message=message) 
     email_admin(subject, body) 
     flash("Your message has been sent. Thank you!", "success") 
    else: 
     flash_errors(form) 

    return render_template("contact.html", 
         form=form) 
+1

मैं relized कि अपने आप को सही इससे पहले कि आप पोस्ट की else पर flash_errors डाल रहे हैं। धन्यवाद! –

+3

मुझे लगता है कि कभी-कभी केवल प्रश्नों को टाइप करने से आप समस्या के बारे में अलग-अलग या अधिक स्पष्ट रूप से सोचने में मदद कर सकते हैं। –

+0

मैं आपके संक्षिप्त विवरण के लिए i_4_got वोट देता हूं। मेरे पास सिर्फ वही अनुभव है, यहां: http://stackoverflow.com/questions/19152471/what-is-the-technique-of-presenting-again-form-wich-contains-error – swdev

संबंधित मुद्दे