Flask建立表單
阿新 • • 發佈:2019-01-27
使用flask提交表單的方式
1、前端html:不使用Flask-WTF,直接把表單寫在HTML模板裡。這在一些特殊情況下,反而會比使用Flask-WTF更加方便。比如在小專案裡,或是需要高度自定義的情況下。需要注意的是,這時要給表單新增一個action屬性,屬性值填寫要處理表單資料的檢視函式。{% 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> {% if not known %} <p>Pleased to meet you!</p> {% else %} <p>Happy to see you again!</p> {% endif %} </div> <form action="/testrun" class="form" method="POST"> {{ form.hidden_tag() }} {{ wtf.form_field(form.name) }} {{ wtf.form_field(form.submit) }} </form> {% endblock %}
注意:如果不需要調整Boostrap的預設表單樣式,只想要快速生成表單,那麼Flask-Bootstrap還提供了一個強大的函式,只需要一行就可以快速生成表單:
{% import "bootstrap/wtf.html" as wtf %}
{{ wtf.quick_form(form) }}
2、前端這時候可以不用繫結操作了,但需要新建一個form物件,用這種方式的好處就是flask有很多內建的方式幫你校驗你的提交
from flask_wtf import Form
from wtforms import StringField, SubmitField
from wtforms.validators import Required
class NameForm(Form):
name = StringField('What is your name?', validators=[Required()])
submit = SubmitField('Submit')
3、這是處理表單資料的函式:
# -*- coding: utf-8 -*- import sys reload(sys) sys.setdefaultencoding('utf-8') import six from flask import render_template, session, redirect, url_for, current_app from .. import db from ..models import User from ..email import send_email from . import main from .forms import NameForm @main.route('/testrun', methods=['GET', 'POST']) def custom(): return render_template('testrun.html',data=six.text_type("提交按鈕後呼叫testrun函式,返回資料"))