1. 程式人生 > >Flask建立表單

Flask建立表單

使用flask提交表單的方式

1、前端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>
    {% 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 %}
不使用Flask-WTF,直接把表單寫在HTML模板裡。這在一些特殊情況下,反而會比使用Flask-WTF更加方便。比如在小專案裡,或是需要高度自定義的情況下。需要注意的是,這時要給表單新增一個action屬性,屬性值填寫要處理表單資料的檢視函式。

注意:如果不需要調整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函式,返回資料"))