1. 程式人生 > >Python進階(五十三)-Flask Web開發實現將表單渲染成HTML

Python進階(五十三)-Flask Web開發實現將表單渲染成HTML

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

Python進階(五十三)-Flask Web來發實現將表單渲染成HTML

  在利用Flask進行Python Web開發時,頁面中的wtf.quick_form(form)函式中的引數form是如何與檢視函式中的form變數關聯起來的?即Flask是如何將表單渲染成HTML的?下面以例項的形式進行問題求解。   在檢視函式views.py中: 這裡寫圖片描述   將相應的表單類例項作為引數傳遞給模版。   相應的LoginForm()定義在forms.py中,定義如下:

# -*- coding:utf-8 -*-
from flask_wtf import Form from wtforms import StringField, PasswordField, BooleanField, SubmitField from wtforms.validators import Required, Length, Email, Regexp, EqualTo, DataRequired # 使用者登入表單 class LoginForm(Form): uname = StringField(u'使用者名稱:', validators=[ DataRequired(), Length(1
,64), '^[A-Za-z][A-Za-z0-9_.]*$', 0, u'使用者名稱必須由字母、數字、下劃線或 . 組成']) pwd = PasswordField(u'密碼:', validators=[DataRequired()]) remember_me = BooleanField(u'記住我?') submit = SubmitField(u'登入')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

  注意:在執行以上程式碼的過程中,會出現Wraning提示:‘FlaskWTFDeprecationWarning: “flask_wtf.Form” has been renamed to “FlaskForm” and will be removed in 1.0.

’   針對該問題,檢視作者宣告,將Form 類重新命名為 FlaskForm,這樣匯入就沒問題了。

from flask_wtf import FlaskForm
  • 1

  相應的類中的引數也需要改為FlaskForm。   html模版內容如下:

{% extends "base_login.html" %}{% import "bootstrap/wtf.html" as wtf %}

<!--具體內容-->
{% block content %}{{ super() }}{% for message in get_flashed_messages() %}
        <div class="alert alert-warning col-md-4 col-md-offset-4 col-sm-6 col-sm-offset-3">
            <button type="button" class="close" data-dismiss="alter">×</button>
            <!--<div class="alert-info">{{message}}</div>-->
            {{message}}
        </div>
    {% endfor %}{{ wtf.quick_form(form) }}{% endblock content %}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

  另外,在除錯過程中,曾經出現過預料之外的模版渲染情況,即生成的Web表單並未在表單模版中渲染成功。經過程式碼檢查校驗,發現是由於基模版與繼承模版出現標籤不匹配和匹配錯誤所造成的。

經驗教訓

  在定義基模版時應確保文件的結構完整,並予以繼承模版適當的繼承空間。   經過修改基模版與繼承模版,模版可以正常渲染。頁面如下圖所示: 這裡寫圖片描述

附 電子書福利(免積分下載)

這裡寫圖片描述 這裡寫圖片描述 這裡寫圖片描述