最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python Flask-web表單使用詳解

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

Flask-WTF擴(kuò)展可以把處理web表單的過程變成一種愉悅的體驗(yàn)。

一、跨站請(qǐng)求偽造保護(hù)

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

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

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

二、表單類

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

#!/usr/bin/env python
#簡單的web表單,包含一個(gè)文本字段和一個(gè)提交按鈕
 
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標(biāo)準(zhǔn)字段

WTForms驗(yàn)證函數(shù)

四、把表單渲染成HTML

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

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

{% 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映射中把這個(gè)視圖函數(shù)注冊(cè)為GET和POST請(qǐng)求的處理程序。如果沒指定methods參數(shù),就只把視圖函數(shù)注冊(cè)為GET請(qǐng)求的處理程序。

 五、重定向和用戶會(huì)話

#!/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消息

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

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 %}

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python pyheatmap包繪制熱力圖

    python pyheatmap包繪制熱力圖

    這篇文章主要為大家詳細(xì)介紹了python pyheatmap包繪制熱力圖,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • python操作微信自動(dòng)發(fā)消息的實(shí)現(xiàn)(微信聊天機(jī)器人)

    python操作微信自動(dòng)發(fā)消息的實(shí)現(xiàn)(微信聊天機(jī)器人)

    這篇文章主要介紹了python操作微信自動(dòng)發(fā)消息(微信聊天機(jī)器人),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 一次搞懂hasattr()/getattr()/setattr()在Python中的應(yīng)用

    一次搞懂hasattr()/getattr()/setattr()在Python中的應(yīng)用

    在Python中,hasattr()、getattr()和setattr()是一組內(nèi)置函數(shù),本文將從入門到精通,全面介紹hasattr()、getattr()和setattr()函數(shù)的用法和相關(guān)知識(shí)點(diǎn),需要的可以了解下
    2023-08-08
  • Python正則表達(dá)式re.search()用法詳解

    Python正則表達(dá)式re.search()用法詳解

    re是Python中最常見的正則表達(dá)式模塊,常用方法包括compile,match,findall,finditer,search,split,sub等,下面這篇文章主要給大家介紹了關(guān)于Python正則表達(dá)式re.search()用法詳解的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • Python通過DOM和SAX方式解析XML的應(yīng)用實(shí)例分享

    Python通過DOM和SAX方式解析XML的應(yīng)用實(shí)例分享

    這篇文章主要介紹了Python通過DOM和SAX方式解析XML的應(yīng)用實(shí)例分享,針對(duì)這兩種解析方式Python都有相關(guān)的模塊可供使用,需要的朋友可以參考下
    2015-11-11
  • Python運(yùn)算符重載的簡單實(shí)例代碼

    Python運(yùn)算符重載的簡單實(shí)例代碼

    什么是運(yùn)算符重載,就是讓自定義的類生成的對(duì)象(實(shí)例)能夠使用運(yùn)算符進(jìn)行操作,這篇文章主要給大家介紹了關(guān)于Python運(yùn)算符重載的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • python numpy和list查詢其中某個(gè)數(shù)的個(gè)數(shù)及定位方法

    python numpy和list查詢其中某個(gè)數(shù)的個(gè)數(shù)及定位方法

    今天小編就為大家分享一篇python numpy和list查詢其中某個(gè)數(shù)的個(gè)數(shù)及定位方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • python自帶tkinter庫實(shí)現(xiàn)棋盤覆蓋圖形界面

    python自帶tkinter庫實(shí)現(xiàn)棋盤覆蓋圖形界面

    這篇文章主要為大家詳細(xì)介紹了python自帶tkinter庫實(shí)現(xiàn)棋盤覆蓋圖形界面,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • 基于python實(shí)現(xiàn)判斷字符串是否數(shù)字算法

    基于python實(shí)現(xiàn)判斷字符串是否數(shù)字算法

    這篇文章主要介紹了基于python實(shí)現(xiàn)判斷字符串是否數(shù)字算法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • python pygame 憤怒的小鳥游戲示例代碼

    python pygame 憤怒的小鳥游戲示例代碼

    這篇文章主要介紹了python pygame 憤怒的小鳥游戲,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02

最新評(píng)論

鲁甸县| 巴林右旗| 秀山| 安康市| 徐水县| 叶城县| 缙云县| 探索| 奎屯市| 东城区| 河源市| 肥东县| 来宾市| 辛集市| 宜昌市| 临泉县| 佛坪县| 天台县| 呼伦贝尔市| 阿拉善右旗| 会理县| 五莲县| 平远县| 上虞市| 武宁县| 新田县| 肃北| 多伦县| 阿鲁科尔沁旗| 郴州市| 铜陵市| 诏安县| 莎车县| 丹江口市| 周至县| 湛江市| 清徐县| 南华县| 武城县| 犍为县| 龙口市|