參考文章:
使用 wtforms 進行表單驗證
早上看了一些html表單的內容。
再翻看wtforms文件,關於wtforms的介紹:
(1)當你必須處理瀏覽器提交的表單資料時,檢視**很快會變得難以閱讀。有一些庫可以 簡化這個工作,其中之一便是 wtforms 。
(2)如果要使用 wtforms ,那麼首先要把表單定義為類。
from wtforms import form, booleanfield, textfield, passwordfield, validators
class
registrationform
(form):
username = textfield
('username', [validators.length(min=4, max=25)])
email = textfield
('email
address', [validators.length(min=6, max=35)])
password = passwordfield
('new
password', [
validators.required(),
validators.equalto
('confirm', message='passwords
must
match')
])confirm = passwordfield
('repeat
password')
accept_tos = booleanfield
('iaccept
thetos', [validators.required()])
(3)flask-wtf 擴充套件可以實現本方案的所有功能,並且還提供一些小的輔助工具。使用 這個擴充套件可以更好的使用表單和 flask 。
(4)在檢視函式中,表單用法示例如下:
defregister
(): form = registrationform(request.form)
if request.method == 'post'
and form.validate():
user = user(form.username.data, form.email.data,
form.password.data)
db_session.add(user)
flash('thanks for registering')
return redirect(url_for('login'))
return render_template('register.html', form=form)
注: 如果資料是通過 http post 方法提交的,就根據 form 的 值建立表單。如果是通過 get 方法提交的,則相應的是 args 。
呼叫 validate() 函式來驗證資料。如果驗證通過,則 函式返回 true ,否則返回 false 。
通過 form..data 可以訪問表單中單個值。
(5)把表單傳遞給模板後就可以輕鬆渲染它們了。看一看下面的示例 模板就可以知道有多輕鬆了。 wtforms 替我們完成了一半表單生成工作。為了做得更好, 我們可以寫乙個巨集,通過這個巨集渲染帶有乙個標籤的字段和錯誤列表(如果有的話)。
以下是乙個使用巨集的示例 _formhelpers.html 模板:
}}class=errors>
}li>
ul>
dd>
注:
上例中的巨集接受一堆傳遞給 wtform 字段函式的引數,為我們渲染字段。引數會作為 html 屬性插入。例如你可以呼叫 render_field(form.username, class=』username』) 來 為輸入元素新增乙個類。
wtforms 返回標準的 python unicode 字串,因此我們 必須使用 |safe 過濾器告訴 jinja2 這些資料已經經過 html 轉義了。
(6)在register.html 中使用_formhelpers.html :
method=post
action="/register">
}}}}
}dl>
type=submit
value=register>
form>
使用過程中記錄每行**的含義。 Flask學習筆記
web 發展至今,特別是伺服器端,涉及到的知識 內容,非常廣泛。這對程式設計師的要求會越來越高。如果採用成熟,穩健的框架,那麼一些基礎的工作,比如,網路操作 資料庫訪問 會話管理等都可以讓框架來處理,那麼程式開發人員可以把精力放在具體的業務邏輯上面。使用web框架開發web應用程式可以降低開發難度,...
Flask 學習筆記
因為mac自帶了python2.7,所以這個文章是基於2.7版本的 依賴於兩個外部庫 werkzeug和jinjia2.werkzeug是乙個wsgi工具集,jinjia2負責渲染模版 2.安裝 1 mac osx或linux sudo pip install virtualenv mkdir my...
flask學習筆記
flask涉及到兩個重要的類 flask和blueprint 藍本 類。flask的應用程式需要flask類例項化才能執行,的基本配置資訊也包含在此類中。例項化如下 from flask import flask配置如下 blueprint類與flask類似,它能夠更好的組織web應用程式,並能延遲...