gpt4 book ai didi

python - 'forms.ContactForm 对象'没有属性 'hidden_tag'

转载 作者:技术小花猫 更新时间:2023-10-29 12:45:40 24 4
gpt4 key购买 nike

我正在尝试使用 flask 创建联系表单,但在呈现页面时不断出现此错误。

'forms.ContactForm object' has no attribute 'hidden_tag'

这是我的文件:

contact.html

{% extends "layout.html" %}

{% block content %}
<h2>Contact</h2>
<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>
{% endblock %}

表单.py

from flask.ext.wtf import Form
from wtforms import Form, 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")

路由.py

from flask import Flask, render_template, request
from forms import ContactForm

app = Flask(__name__)
app.secret_key = 'development key'

@app.route('/')
def home():
return render_template('home.html')

@app.route('/about')
def about():
return render_template('about.html')

@app.route('/contact', methods=['GET', 'POST'])
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)

所有其他页面模板都运行良好。任何建议都会很棒!感谢您的帮助!

最佳答案

我刚刚也解决了这个问题。

您的问题是您导入了 Form 两次,导致您的 flask-wtf Form 导入无用。

from flask_wtf import Form
from wtforms import Form, TextField, TextAreaField, SubmitField, validators
# ^^^ Remove

只有 flask-wtf 扩展有特殊的 Form 类可以自动处理 CSRF/其他东西。

关于python - 'forms.ContactForm 对象'没有属性 'hidden_tag',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19612186/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com