hello.py 中CSRF
app = Flask(name) app.config['SECRET_KEY'] = 'hard to guess string' 1、
表单,hello.py
from flask.ext.wtf import Form from wtforms import StringField,SubmitField from wtforms.valiadators import Required
class NameForm(Form): name=StringField('What is your name?',validators=[Required()]) submit=SubmitField('Submit')
html 基本不适用
<form method="POST"> {{ form.hidden_tag() }} {{ form.name.label }} {{ form.name(id='my-text-field') }} {{ form.submit() }} </form>
or #html 使用bootstrap渲染表单,wtf.quick_form(form) {% 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> {{ wtf.quick_form(form) }} {% endblock %}
hello.py @app.route('/',methods=['GET','POST']) form.name.data
@app.route('/', methods=['GET', 'POST']) def index(): name = None form = NameForm() if form.validate_on_submit(): name = form.name.data form.name.data = '' return render_template('index.html', form=form, name=name)
2、
支持
StringField TextAreaField PasswordField HiddenField DateField DateTimeField IntegerField DecimalField FloatField BooleanField 复选框 RadioField SelectField SelectMultipleField FileField 文件上传 SubmitField FormField FieldList 3、
验证
Email EqualTo IPAddress Length NumberRange Optional Required 确保有数据 Regexp 正则 URL AnyOf 在值内 NoneOf 不在 4、 ###########记住用户是否登录, from flask import Flask, render_template, session, redirect, url_for @app.route('/', methods=['GET', 'POST']) def index(): form = NameForm() if form.validate_on_submit(): session['name'] = form.name.data return redirect(url_for('index')) return render_template('index.html', form=form, name=session.get('name'))