use*_*022 5 python-2.7 flask-wtforms
我在这里和其他一些地方看过其他类似的问题,但解决方案似乎没有帮我解决问题.尽管如此,我没有看到我所获得的这个简单代码与其他类似代码之间存在太大差异.特别是这一个Flask - wtforms:验证始终是假的
forms.validate_on_submit()总是假的,我看不出原因.我正在阅读Miguel Grinberg的Flask Web开发书,但我想改变一些东西以便了解更多信息.它在html模板中使用wtf.quick_form(form)时有效,但是如果我删除了quickform条目并放入表单字段,那么它就不起作用屏幕只是刷新并且它不会将Stranger更改为任何名称进入
HTML索引模板
{% extends "base.html" %}
{% import "bootstrap/wtf.html" as wtf %}
{% block title %}Flasky{% endblock %}
{% block page_content %}
<div class="page-header">
<h1>Hello, {% if name %}{{ name }}{% else %}Stranger{% endif %}!</h1>
</div>
<form action="" method='POST'>
{{ form.name.label }} <br>
{{ form.name }}
{{ form.submit }}
</form>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
相关代码hello.py
from flask import Flask, render_template, request
from flask.ext.script import Manager
from flask.ext.bootstrap import Bootstrap
from flask.ext.moment import Moment
from flask.ext.wtf import Form
from wtforms import StringField, SubmitField, RadioField, TextField, validators
from wtforms.validators import Required
from wtforms.validators import DataRequired
app = Flask(__name__)
class NameForm(Form):
name = StringField('What is your name?',validators=[Required()] )
submit = SubmitField('Submit')
@app.route('/', methods=['GET', 'POST'])
def index():
name = None
form = NameForm(request.form) #From the docs I read I don't need
# request.form but it
# doesn't work either with it or without it
if form.validate() == True:
name='True' #never happens is not validating or is always set to False for
# some reason
if form.validate_on_submit(): #isn't validating or working
name = form.name.data #'Stranger' will disappear from the html template and
#replaced with the name the user entered in the
# Stringfield
form.name.data = '' #clear stringfield for next round
return render_template('index.html',form=form, name=name)
if __name__ == '__main__':
app.run(host='0.0.0.0', port=80, debug=True)'
Run Code Online (Sandbox Code Playgroud)
什么是我不理解\缺少?谢谢
G
| 归档时间: |
|
| 查看次数: |
7959 次 |
| 最近记录: |