Python進階(五十三)-Flask Web開發實現將表單渲染成HTML
阿新 • • 發佈:2018-12-16
也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!
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.
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表單並未在表單模版中渲染成功。經過程式碼檢查校驗,發現是由於基模版與繼承模版出現標籤不匹配和匹配錯誤所造成的。
經驗教訓
在定義基模版時應確保文件的結構完整,並予以繼承模版適當的繼承空間。 經過修改基模版與繼承模版,模版可以正常渲染。頁面如下圖所示: