欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Flask框架實現(xiàn)給視圖函數(shù)增加裝飾器操作示例

 更新時間:2018年07月16日 12:05:06   作者:鎧甲巨人  
這篇文章主要介紹了Flask框架實現(xiàn)給視圖函數(shù)增加裝飾器操作,結(jié)合實例形式分析了flask框架視圖添加裝飾器的具體操作方法及相關(guān)注意事項,需要的朋友可以參考下

本文實例講述了Flask框架實現(xiàn)給視圖函數(shù)增加裝飾器操作。分享給大家供大家參考,具體如下:

@app.route的情況下增加裝飾器的寫法:

from flask import Flask,request,render_template,redirect,session,url_for,views
from flask import render_template
app = Flask(__name__) #實例化flask對象
app.debug = True  #能夠隨時更改自動重啟,不加的話每次更改代碼需要手動重啟
app.config['SECRET_KEY'] = '123456'  #secret_key,用于給session加密
@app.route('/login',methods=['GET','POST'],endpoint='t1') #endpoint是url的別名,相當(dāng)于django中Url的name
def login():
  if request.method == "GET":
    # res = request.query_string
    # print(res) 獲取通過GET請求url傳過來的參數(shù)
    return render_template('login.html')
  else:
    user = request.form.get('user')
    pwd = request.form.get('pwd')
    if user == 'tom' and pwd == '123':
      session['userinfo'] = user  #設(shè)置session
      return render_template('hello.html')
    return render_template('login.html', error='用戶名或密碼錯誤')
def wapper(func):
  def inner(*args,**kwargs):
    user = session.get('user_info')
    if not user:
      return redirect('/login')
    return func(*args,**kwargs)
  return inner
@app.route('/detail/<int:nid>',methods=['GET'],endpoint='n1')
@wapper
def detail(nid):
  print(nid)
  return render_template('hello.html')
'''
如果給一個視圖函數(shù)增加裝飾器,應(yīng)該加在app.route下面,這樣的效果就是,
裝飾器將下面的所有內(nèi)容包裹,然后路由對應(yīng)到這大的包裹中來。
需要注意endpoint要注明,如果不注明endpoint則默認用函數(shù)名來定義,
此時所有的函數(shù)名都叫inner了,所以需要注明endpoint,只是為了區(qū)分。
'''
if __name__ == '__main__':
  app.run()

另一種寫法:

import functools
def wapper(func):
  @functools.wraps(func)
  def inner(*args,**kwargs):
    return func(*args,**kwargs)
  return inner
'''
functools.wraps()相當(dāng)于保留元信息
說白了就是,如果不加這個裝飾器,那么你打印detail的__name__它就是inner了,
因為加了裝飾器,效果等同于inner=inner(detail()),
如果在裝飾器中加了functools這個裝飾器,那么相當(dāng)于給__name__重新賦值,inner.__name__ = func.__name_-
其函數(shù)的名字得以保留。
'''
@wapper
def detail():
  pass
print(detail.__name__)

flask的get_flashed_messages,flash

from flask import Flask,get_flashed_messages,flash
app = Flask(__name__)
app.secret_key = 'asdf'
@app.route('/get')
def get():
  data = get_flashed_messages()
  print(data)
  return 'Hello world'
@app.route('/set')
def set():
  flash('info info')
  '''
  閃現(xiàn)效果,相當(dāng)于set視圖函數(shù)執(zhí)行2次,會在一個列表中存儲兩個flash函數(shù)的內(nèi)容,
  當(dāng)執(zhí)行g(shù)et_flashed_messages的時候則會取出該列表,并清空,類似字典的Pop。
  具體用處不大。。。
  '''
  return 'Hello world'
if __name__ == '__main__':
  app.run()

flash還可以通過category參數(shù)給Flash內(nèi)容歸類,通過不同類別取不同內(nèi)容。

更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python入門與進階經(jīng)典教程》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python文件與目錄操作技巧匯總

希望本文所述對大家Python程序設(shè)計有所幫助。

相關(guān)文章

  • 使用Python自動化Microsoft Excel和Word的操作方法

    使用Python自動化Microsoft Excel和Word的操作方法

    這篇文章主要介紹了使用Python自動化Microsoft Excel和Word,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • python的endswith()的使用方法及實例

    python的endswith()的使用方法及實例

    這篇文章主要介紹了python的endswith()的使用方法及實例,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-07-07
  • python pyhs2 的安裝操作

    python pyhs2 的安裝操作

    這篇文章主要介紹了python pyhs2 的安裝操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • 詳解python的變量緩存機制

    詳解python的變量緩存機制

    這篇文章主要介紹了python的變量緩存機制,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • YOLOv5中SPP/SPPF結(jié)構(gòu)源碼詳析(內(nèi)含注釋分析)

    YOLOv5中SPP/SPPF結(jié)構(gòu)源碼詳析(內(nèi)含注釋分析)

    其實關(guān)于YOLOv5的網(wǎng)絡(luò)結(jié)構(gòu)其實網(wǎng)上相關(guān)的講解已經(jīng)有很多了,但是覺著還是有必要再給大家介紹下,下面這篇文章主要給大家介紹了關(guān)于YOLOv5中SPP/SPPF結(jié)構(gòu)源碼的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • 使用Python實現(xiàn)提取快遞信息

    使用Python實現(xiàn)提取快遞信息

    這篇文章主要為大家詳細介紹了如何使用Python調(diào)用快遞查詢API接口,并提取出我們需要的快遞信息,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-04-04
  • Python中的文件和目錄操作實現(xiàn)代碼

    Python中的文件和目錄操作實現(xiàn)代碼

    對于文件和目錄的處理,雖然可以通過操作系統(tǒng)命令來完成,但是Python語言為了便于開發(fā)人員以編程的方式處理相關(guān)工作,提供了許多處理文件和目錄的內(nèi)置函數(shù)。重要的是,這些函數(shù)無論是在Unix、Windows還是Macintosh平臺上,它們的使用方式是完全一致的。
    2011-03-03
  • python中hasattr()、getattr()、setattr()函數(shù)的使用

    python中hasattr()、getattr()、setattr()函數(shù)的使用

    這篇文章主要介紹了python中hasattr()、getattr()、setattr()函數(shù)的使用方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • Python字符串詳細介紹

    Python字符串詳細介紹

    這篇文章主要介紹了Python字符串詳解,本文講解了字符串相關(guān)知識、字符串的一些特性、原始字符串、unicode字符串、字符串的常用操作方法、內(nèi)建函數(shù)列表等內(nèi)容,需要的朋友可以參考下
    2015-05-05
  • Python中矩陣創(chuàng)建和矩陣運算方法

    Python中矩陣創(chuàng)建和矩陣運算方法

    今天小編就為大家分享一篇Python中矩陣創(chuàng)建和矩陣運算方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08

最新評論