0
我無法獲得某個簡單的Flask WTForm驗證。Flask WTForms表單不驗證
經過幾天的鬥爭,我嘗試了所有我能想到的。一般來說,我是Flask和Web編程的新手。
這裏是我的代碼的精簡但工作版本。測試代碼的唯一操作(除了提交表單)是將消息打印到終端。運行時,它的外觀:
這是views.py:
# -*- coding: utf_8 -*-
...
@app.route('/test/new/', methods=['GET','POST'])
def newTest():
form = TestForm(request.form)
if form:
print 'request.form.get(\'name\') is %s' % (request.form.get('name'),)
if request.method == 'POST':
print 'in newTest(), request is POST'
if form.validate():
print 'form validates'
return redirect(url_for('allTests'))
else:
print 'form does not validate'
return render_template('newTest.html', form=form)
else:
return render_template('newTest.html', form=form)
這裏的forms.py:
class TestForm(Form):
name = StringField(u"Test Name", [validators.InputRequired()])
address = StringField(u"Test Address", [validators.InputRequired()])
submit = SubmitField(u"Submit")
models.py:
from sqlalchemy import Column, Integer, Unicode
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class TestModel(Base):
__tablename__ = 'test'
name = Column(Unicode(80), nullable = False)
id = Column(Integer, primary_key = True)
address = Column(Unicode(80), nullable = False)
和T他的模板:
<html lang="en">
<head>
<meta charset="utf-8">
<title>New Test</title>
</head>
<body>
<div>
<form action="{{ url_for('newTest') }}" method="POST" name="add_rest">
<ul>
<li>Name: {{ form.name }}</li>
<li>Address: {{ form.address }}</li>
</ul>
<input type="submit" value="Create">
</div>
</body>
</html>
輸出(終端),我得到當我點擊上面的「創建」:
request.form.get('name') is Vinnie
in newTest(), request is POST
form does not validate
10.0.2.2 - - [18/Feb/2016 02:34:51] "POST /test/new/ HTTP/1.1" 200 -
那麼瀏覽器將重新顯示的形式和內容。
我假設我錯過了一些簡單的東西,但是我一直沒能弄明白這一點對於我的生活。
如通過「樹」的代碼的結構是:
我會任何幫助非常感謝!
Yesssss !!!非常感謝!那(並且照顧我無法看到的其他錯誤,因爲validate()代碼從未執行)修復它。這一直在困擾着我好幾天。 – jazcap53