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

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

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

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

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

from flask import Flask,request,render_template,redirect,session,url_for,views
from flask import render_template
app = Flask(__name__) #實(shí)例化flask對(duì)象
app.debug = True  #能夠隨時(shí)更改自動(dòng)重啟,不加的話(huà)每次更改代碼需要手動(dòng)重啟
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) 獲取通過(guò)GET請(qǐng)求url傳過(guò)來(lái)的參數(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='用戶(hù)名或密碼錯(cuò)誤')
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')
'''
如果給一個(gè)視圖函數(shù)增加裝飾器,應(yīng)該加在app.route下面,這樣的效果就是,
裝飾器將下面的所有內(nèi)容包裹,然后路由對(duì)應(yīng)到這大的包裹中來(lái)。
需要注意endpoint要注明,如果不注明endpoint則默認(rèn)用函數(shù)名來(lái)定義,
此時(shí)所有的函數(shù)名都叫inner了,所以需要注明endpoint,只是為了區(qū)分。
'''
if __name__ == '__main__':
  app.run()

另一種寫(xiě)法:

import functools
def wapper(func):
  @functools.wraps(func)
  def inner(*args,**kwargs):
    return func(*args,**kwargs)
  return inner
'''
functools.wraps()相當(dāng)于保留元信息
說(shuō)白了就是,如果不加這個(gè)裝飾器,那么你打印detail的__name__它就是inner了,
因?yàn)榧恿搜b飾器,效果等同于inner=inner(detail()),
如果在裝飾器中加了functools這個(gè)裝飾器,那么相當(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次,會(huì)在一個(gè)列表中存儲(chǔ)兩個(gè)flash函數(shù)的內(nèi)容,
  當(dāng)執(zhí)行g(shù)et_flashed_messages的時(shí)候則會(huì)取出該列表,并清空,類(lèi)似字典的Pop。
  具體用處不大。。。
  '''
  return 'Hello world'
if __name__ == '__main__':
  app.run()

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

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

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

相關(guān)文章

  • Python中pygame安裝方法圖文詳解

    Python中pygame安裝方法圖文詳解

    這篇文章主要介紹了Python中pygame安裝方法,結(jié)合圖文說(shuō)明,較為詳細(xì)的分析總結(jié)了Python中pygame的下載及安裝調(diào)試詳細(xì)步驟,需要的朋友可以參考下
    2015-11-11
  • Python解壓 rar、zip、tar文件的方法

    Python解壓 rar、zip、tar文件的方法

    這篇文章主要介紹了Python解壓 rar、zip、tar文件的方法,文中通過(guò)實(shí)例代碼給大家介紹了python 解壓文件壓縮文件的方法,需要的朋友參考下吧
    2019-11-11
  • PyTorch中torch.save()的用法和應(yīng)用小結(jié)

    PyTorch中torch.save()的用法和應(yīng)用小結(jié)

    本文主要介紹了PyTorch中torch.save()的用法和應(yīng)用小結(jié),torch.save()的主要作用就是將PyTorch對(duì)象保存到磁盤(pán)上,下面就來(lái)具體介紹一下,感興趣的可以了解一下
    2024-03-03
  • Python 過(guò)濾錯(cuò)誤log并導(dǎo)出的實(shí)例

    Python 過(guò)濾錯(cuò)誤log并導(dǎo)出的實(shí)例

    今天小編就為大家分享一篇Python 過(guò)濾錯(cuò)誤log并導(dǎo)出的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • Pycharm plot獨(dú)立窗口顯示的操作

    Pycharm plot獨(dú)立窗口顯示的操作

    這篇文章主要介紹了Pycharm plot獨(dú)立窗口顯示的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • 使用Python腳本在Linux下實(shí)現(xiàn)部分Bash Shell的教程

    使用Python腳本在Linux下實(shí)現(xiàn)部分Bash Shell的教程

    這篇文章主要介紹了使用Python腳本在Linux下實(shí)現(xiàn)部分Bash Shell的教程,包括一些簡(jiǎn)單的輸入輸出和郵件功能,需要的朋友可以參考下
    2015-04-04
  • 全CPU并行處理Pandas操作Pandarallel更快處理數(shù)據(jù)

    全CPU并行處理Pandas操作Pandarallel更快處理數(shù)據(jù)

    我們?cè)谔幚頂?shù)據(jù)時(shí),通常小的數(shù)據(jù)對(duì)處理速度不敏感,但數(shù)據(jù)量一大,頓時(shí)會(huì)感覺(jué)數(shù)據(jù)處理效率不盡如人意,今天介紹的pandarallel就是一個(gè)簡(jiǎn)單高效的Pandas并行工具,幾行代碼就可以提高數(shù)據(jù)處理效率,
    2024-01-01
  • Python 記錄日志的靈活性和可配置性介紹

    Python 記錄日志的靈活性和可配置性介紹

    這篇文章給大家介紹了關(guān)于日志記錄庫(kù)的靈活性和可配置性,目的在于證明它如何設(shè)計(jì)的,對(duì)python 日志記錄相關(guān)知識(shí)感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧
    2018-02-02
  • Python爬蟲(chóng)之網(wǎng)絡(luò)請(qǐng)求

    Python爬蟲(chóng)之網(wǎng)絡(luò)請(qǐng)求

    這篇文章主要介紹了Python爬蟲(chóng)之網(wǎng)絡(luò)請(qǐng)求,文章基于Python展開(kāi)對(duì)網(wǎng)絡(luò)請(qǐng)求的相關(guān)介紹,需要的小伙伴可以參考一下
    2022-04-04
  • Python發(fā)送手機(jī)動(dòng)態(tài)驗(yàn)證碼代碼實(shí)例

    Python發(fā)送手機(jī)動(dòng)態(tài)驗(yàn)證碼代碼實(shí)例

    這篇文章主要介紹了Python發(fā)送手機(jī)動(dòng)態(tài)驗(yàn)證碼代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02

最新評(píng)論

抚远县| 七台河市| 安多县| 商丘市| 平乡县| 武宣县| 辽中县| 平远县| 通化市| 兰坪| 佛冈县| 安乡县| 庄浪县| 家居| 建德市| 沧州市| 常德市| 建水县| 彰化市| 龙州县| 绥棱县| 漾濞| 镇巴县| 丰镇市| 陆川县| 琼结县| 外汇| 大竹县| 永寿县| 惠州市| 龙岩市| 监利县| 深圳市| 溧水县| 龙海市| 德格县| 高密市| 洱源县| 海晏县| 房产| 河池市|