亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python Flask-web表單使用詳解

 更新時間:2017年11月18日 16:03:55   作者:瀟瀟、寒  
這篇文章主要為大家詳細介紹了Python Flask-web表單的使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下

Flask-WTF擴展可以把處理web表單的過程變成一種愉悅的體驗。

一、跨站請求偽造保護

默認情況下,F(xiàn)lask-WTF能夠保護所有表單免受跨站請求偽造的攻擊。惡意網(wǎng)站把請求發(fā)送到被攻擊者已登錄的網(wǎng)站時就會引起CSRF攻擊。

為了實現(xiàn)CSRF保護,F(xiàn)lask-WTF需要程序設置一個密鑰。Flask-WTF使用這個密鑰生成加密令牌,再用令牌驗證請求中表單數(shù)據(jù)的真?zhèn)?。設置密鑰的方法如下所示:

app = Flask(__name__)
app.config['SECRET_KEY']='hard to guess string'

二、表單類

使用Flask-WTF時,每個web表單都由一個繼承自Form的類表示。這個定義表單中的一組字段,每個字段都用對象表示。字段對象可附屬一個或多個驗證函數(shù)。驗證函數(shù)用來驗證用戶提交的輸入值是否符合要求。

#!/usr/bin/env python
#簡單的web表單,包含一個文本字段和一個提交按鈕
 
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')

StringField類表示屬性為type="text"的<input>元素,SubmitField類表示屬性為type="submit"的<input>元素。

WTForms支持的HTML標準字段

WTForms驗證函數(shù)

四、把表單渲染成HTML

表單字段是可用的,在模板中調用后會渲染成HTML。假設視圖函數(shù)把一個NameForm實例通過參數(shù)form傳入模板,在模板中可以生成一個簡單的表單,如下所示:

<form method="POST">
  {{ form.hidden_tag() }}
  {{ form.name.label }} {{ form.name() }}
  {{ form.submit() }}
</form>
<form method="POST">
  {{ form.hidden_tag() }}
  {{ form.name.label }} {{ form.name(id='my-text-field') }}
  {{ form.submit() }}
</form>

Flask-Bootstrap提供了一個非常高端的輔助函數(shù),可以使用Bootstrap中預先定義好的表單樣式渲染整個Flask-WTF表單,而這些操作只需調用一次即可完成。

{% import "boostrap/wtf.html" as wtf %}
{{ wtf.quick_form(form) }}
#使用Flask-WTF和Flask-Bootstrap渲染表單
 
{% 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>
</div>
{{ wtf.quick_form(form) }}
{% endblock %}

 四、在視圖函數(shù)中處理表單

@app.route('/',methods=['GET','POST'])
def index():
  name = None
  form = NameForm()
  if form.validate_on_submit():
    name = form.name.data
    form.name.data = ''
  return render_template('index.html',form=form,name=name)

app.route修飾器中添加的methods參數(shù)告訴Flask在URL映射中把這個視圖函數(shù)注冊為GET和POST請求的處理程序。如果沒指定methods參數(shù),就只把視圖函數(shù)注冊為GET請求的處理程序。

 五、重定向和用戶會話

#!/usr/bin/env python
 
from flask import Flask,render_template,session,redirect,url_for
app = Flask(__name__)
 
@app.route('/',methods=['GET','POST'])
def index():
  form = NameForm()
  if form.validate_on_submit():
    session['name'] = form.name.data
    return redirect(url_for('index'))
  return render_template('index.html',form=form,name=session.get('name'))

六、Flash消息

例子:提示用戶名或密碼錯誤,彈出窗口

from flask import Flask,render_template,session,redirect,url_for,flash
app = Flask(__name__)
 
@app.route('/',methods=['GET','POST'])
def index():
  form = NameForm()
  if form.validata_on_submit():
    old_name = session.get('name')
    if old_name is not None and old_name != form.name.data:
      flash('Looks like you have changed your name!')
    session['name'] = form.name.data
    return redirect(url_for('index'))
  return render_template('index.html',form=form,name=session.get('name'))
#渲染Flash消息
 
{% block content %}
<div class="container">
  {% for message in get_flashed_messages() %}
  <div class="alert alert-warning">
    <button type="button" class="close" data-dismiss="alert">×</button>
    {{ message }}
  </div>
  {% endfor %}
  {% block page_content %}{% endblock %}
</div>
{% endblock %}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • python?pandas庫讀取excel/csv中指定行或列數(shù)據(jù)

    python?pandas庫讀取excel/csv中指定行或列數(shù)據(jù)

    通過閱讀表格,可以發(fā)現(xiàn)Pandas中提供了非常豐富的數(shù)據(jù)讀寫方法,下面這篇文章主要給大家介紹了關于python利用pandas庫讀取excel/csv中指定行或列數(shù)據(jù)的相關資料,需要的朋友可以參考下
    2022-02-02
  • 七個生態(tài)系統(tǒng)核心庫[python自學收藏]

    七個生態(tài)系統(tǒng)核心庫[python自學收藏]

    無論你是想快速入手Python,還是想成為數(shù)據(jù)分析大神或者機器學習大佬,亦或者對Python代碼進行優(yōu)化,本文的python庫都能為你提供一些幫助
    2021-08-08
  • python學習實操案例(四)

    python學習實操案例(四)

    這篇文章主要介紹了python學習實操案例,這一篇小編給大家?guī)淼氖橇斜?,所以這里是和列表有關的案例,需要的小伙伴可以參考一下,希望對你有所幫助<BR>
    2022-02-02
  • Python3 Click模塊的使用方法詳解

    Python3 Click模塊的使用方法詳解

    這篇文章主要介紹了Python3 Click模塊的使用方法詳解,需要的朋友可以參考下
    2020-02-02
  • python實現(xiàn)修改固定模式的字符串內容操作示例

    python實現(xiàn)修改固定模式的字符串內容操作示例

    這篇文章主要介紹了python實現(xiàn)修改固定模式的字符串內容操作,結合實例形式詳細分析了Python修改固定模式字符串原理、實現(xiàn)方法及相關操作注意事項,需要的朋友可以參考下
    2019-12-12
  • Windows系統(tǒng)Python直接調用C++ DLL的方法

    Windows系統(tǒng)Python直接調用C++ DLL的方法

    這篇文章主要介紹了Windows系統(tǒng)Python直接調用C++ DLL文件的方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-08-08
  • 教你如何使用Conda命令?+?安裝tensorflow

    教你如何使用Conda命令?+?安裝tensorflow

    conda 是開源包(packages)和虛擬環(huán)境(environment)的管理系統(tǒng),這篇文章主要介紹了Conda命令和安裝tensorflow的詳細過程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-01-01
  • wxpython繪制音頻效果

    wxpython繪制音頻效果

    這篇文章主要為大家詳細介紹了wxpython繪制音頻效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • 一篇文章帶你入門python之推導式

    一篇文章帶你入門python之推導式

    這篇文章主要為大家詳細介紹了python的推導式,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • python web框架Flask實現(xiàn)圖形驗證碼及驗證碼的動態(tài)刷新實例

    python web框架Flask實現(xiàn)圖形驗證碼及驗證碼的動態(tài)刷新實例

    在本篇文章里小編給大家整理的是關于python web框架Flask實現(xiàn)圖形驗證碼的相關知識點,有需要的朋友們參考下。
    2019-10-10

最新評論