簡體   English   中英

jinja2.exceptions.UndefinedError: 'forms.ContactForm object' 沒有屬性 'message'

[英]jinja2.exceptions.UndefinedError: 'forms.ContactForm object' has no attribute 'message'

我正在嘗試使用燒瓶創建聯系表單,但是當我在調試模式下運行應用程序並打開渲染網頁時不斷收到此錯誤。

當我在本地主機中打開我的網站時,這是我的瀏覽器錯誤:

UndefinedError
jinja2.exceptions.UndefinedError: 'forms.ContactForm object' has no attribute 'message'

我的文件 :

第一個.py

from flask import Flask, flash, make_response, redirect, render_template, request, session, url_for, abort
from werkzeug.utils import secure_filename
from flask_mail import Mail, Message
from forms import ContactForm

app = Flask(__name__)

app.secret_key = "example"

# Contact form
@app.route('/contact', methods=['POST', 'GET'])
def contact():
    form = ContactForm()
    if request.form == 'POST':
        if form.validate == False:
            flash('Fill all the fields')
            return render_template('contact.html', form=form)
        else:
            return 'Success'
    else:
        return render_template('contact.html', form=form)
...

表格.py

from flask_wtf import Form
from wtforms import StringField, IntegerField, TextAreaField, SubmitField, RadioField, SelectField, EmailField
from wtforms import validators, ValidationError


class ContactForm(Form):
    name = StringField('Name of student', [validators.data_required('Please enter your name')])
    gender = RadioField('Gender', choices=[('M', 'Male'), ('F', 'Female')])
    address = TextAreaField('Address')
    email = EmailField('Enter your email', [validators.data_required('Please enter your email')])
    age = IntegerField('Age')
    language = SelectField('Languages', choices=[('cpp', 'C++'), ('py', 'Python')])
    submit = SubmitField('Send')

聯系人.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Contact form</title>
</head>
<body>
    <h1 style="text-align: center;" >Contact Form</h1>
    
    {% for message in form.message.errors %}
    <div>{{ message }}</div>
    {% endfor %}
    
    {% for message in form.email.errors %}
    <div>{{ message|e }}</div>
    {% endfor %}
    
    <form action="/contact" method="post">
        <fieldset>
            <legend>Contact Form</legend>
            {{ form.hidden_tag }}
            {{ form.name.lable }}
            {{ form.name }}
            <br>
            {{ form.gender.lable }}
            {{ form.gender }}
            <br>
            {{ form.address.lable }}
            {{ form.address }}
            <br>
            {{ form.email.lable }}
            {{ form.email }}
            <br>
            {{ form.age.lable }}
            {{ form.age }}
            <br>
            {{ form.submit }}
        </fieldset>
    </form>
    
</body>
</html>

form.message.errors

我的應用程序的所有部分都正常工作 - 感謝您的建議

子類flask_wtf.Formwtforms.form.Form有一個errors字段 您想通過它訪問模板中表單上的驗證錯誤。

{% for field in form.errors %}
   <div>{{ field }}
   {% for message in form.errors[field] %}
       <div>{{ message }}</div>
   {% endfor %}
   </div>
{% endfor %}

要訪問特定表單字段(例如name字段)的錯誤,您可以編寫:

{% for message in form.name.errors %}
   <div>{{ message }}</div>
{% endfor %}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM