Flask學習筆記 7

2021-08-04 09:07:43 字數 2251 閱讀 6018

參考文章:

使用 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應用程式,並能延遲...