<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      使用 python flask 框架實現一個簡單的抽獎系統

      Flask 實現一個簡易的抽獎系統

      項目前置知識

      目前 python主流的框架: Django 、flask 、Tornado

      image

      簡介:

      1.框架

      框架? 為什莫使用框架? (前置知識講解比較冗雜,望諒解)

      框架:英文名為 (Framework),意思是框架、機制、基準。最高源于建筑行業,現在框架這個概念使用十分廣泛,尤其是在軟件行業。 在軟件工程中,框架被定義為整個或部分系統的可重用設計,表現為一組可重用設計,是可被應用開發者定制的骨架。

      通俗來說,一個框架是實現某種功能或者是項目的半成品,提供了一些常用的工具和一些基礎通用的組件,可以使開發人員在此基礎上,更高效的實現業務需求的設計。“使用框架,可以使開發者重復造輪子,而是直接調用其類或者函數就可以實現需求的功能 ”

      ? 舉個例子幫助大家理解,相信大家日常生活都了解過ppt。我們來看一下ppt的使用邏輯,當我們打開一個 office Power Point或者是WPS ,然后直接新建空白演示文稿就可以直接些內容,想要什么背景,字體,主題風格等,都可以直接在空白文稿中添加,實際上這個過程中,我們就在使用框架。還記得我們前面說的吧,框架是實現某種功能或者是項目的半成品,這里就和我們導入的ppt模板是一個道理,當我們導入一個ppt模板之后,只需要在里面添加我們要寫入的內容就可以了,不用再擔心字體庫、風格庫、動畫庫等。這些基礎內容都是框架搭建好的基礎支撐。

      ?

      那我們做了這么多的贅述,其實就是想知道,我們為啥要在計算機行業使用框架,這個在前面其實已經提到了。互聯網軟件系統隨著業務的發展,變得越來越復雜,不同領域的業務所涉及到的知識、內容、問題非常非常多,那么一定程度上使用框架就可以避免程序員重復造輪子,使我們把重心放在要實現的功能上面。

      2.python flask框架

      ? flask是python中基于WSGI的輕量級 web開發框架,也被我們稱之為web微框架。微框架中的"微" 表示flask的目標是保持核心簡單而又可擴展。flask不會替你做出很多決定,比如選用何種數據,使用何種模板引擎,這些在flask中都非常容易改變。"Flask可以變成你想要的任何東西,一切恰到好處,由你做主 "

      這與python中最出名的Django框架形成了鮮明的對比。Django框架功能全面,它提供一站式解決方案,集成了MVT(Model-View-Template)和ORM(Object Relational Mapping),以及后臺管理。但是缺點也很明顯,它偏重。就像是一個已經裝修好的房子,它提供好了你想要的東西,直接拿去用就好了。

      image

      ? Flask相對于Diango而言是輕量級的web框架。和Django不同,Flask輕巧、簡潔,通過定制第三方擴展來實現具體的功能。就像是已經刷好墻的房子,你想要什么家具就自己添加。

      //flask 包下載之后,會自動下載依賴庫 
      Flask依賴于兩個外部庫——Werkceug和Jnija 2。Werkrcup是一個WSGI(在Web應用和多種服務器之間的標準Python接口)工具集,Jnija 2負責渲染模板。所以,在安裝Flask時,會自動安裝這兩個庫。
          
      為了更好地管理Python應用,通常情況下會在虛擬環境中安裝Flask框架。安裝命令如下:
      pip install flask
        
          
      MarkupSafe 庫:附帶Jinjia,用于轉義渲染模板不受信任的輸入
      itsDangerous:保護flask會話的cookie
      Click庫:用于編寫命令行框架
      

      image

      用Flask實現隨機抽獎應用

      1.基礎代碼

      //新建項目后的第一個簡單的flask應用就誕生了
      
      #導入庫
      from flask import Flask
      app = Flask(__name__) #創建一個Flask實例
      
      @app.route('/') 
      def index(): # 視圖函數
          return 'Hello World!'
      
      if __name__ == '__main__':
          app.run()
          
      //那,這段代碼是什么意思呢?
      
      ¤ 導入Flask庫,定義Flask實例化對象app
      
      ¤ 實例化一個對象 app 時,傳入 __name__ :目的是接受包或者模塊的名稱作為參數,讓flask.helpers.get_root_path以便獲得靜態文件和模板文件的目錄 “__name__ 可以簡單認為代表目前這個文件。有了這個參數Flask會讀取參數所提供的文件的內容,來獲取app模板或是靜態文件。”
      
      ¤ 使用route() 裝飾器告訴Flask什么樣的URL能觸發執行被裝飾的函數。
      這個裝飾函數就是視圖函數,它返回顯示在用戶瀏覽器中的信息。
      
      ¤ 使用run()函數來讓應用運行在本地服務器上。其中“ if _ name _ main _” 可確保服務器只在該腳本被Python解釋器直接執行時才會運行。
      
      // if __name__ == '__main__' 解釋
      ¤ 由于pyton文件既可以做為一個腳本執行,也可以作為一個包被引用。 所以當我們只想讓他作為一個腳本被執行時,就可以使用 if __name__ == '__main__' 來限定。原因是因為 當 print(__name__)直接被當作腳本執行時,會返回__main__ ,但如果被當作包引入時,print則不會輸出任何結果。那么這個==判斷就會失效,該程序下面的run函數就不會被執行。
      

      2.在pycharm中運行結果

      image

      3.開啟調試模式

      雖然run() 方法使用于啟動本機的開發服務器,但是每次修改代碼后都要手動的重啟它,比較煩瑣,此時可是使用Flask 調試模式解決。

      app.run(debug=True)
      
      此外可以啊綁定ip和端口
      app.run(host='0.0.0.0', port=80, debug=True)
      
      0.0.0.0代表電腦所有的IP。80是HTTP網站服務的默認端口。什么是默認?比如,我們訪問網站http://www.example.com,其實是訪問的http://www.example.com:80,只不過:80可以省略不寫。
      
      由于綁定了80端口,需要使用root權限運行server.py。也就是:
      $ sudo python3 server.py
      

      4.路由

      客戶端(如Web瀏覽器)把請求發送給Web服務器后,Web服務器會把請求發送給Flask程序實例。程序實例需要知道對每個URL請求運行哪些代碼,所以保存了一個URL到Pybon函數的映射關系。處理URL和函數之間關系的程序稱為路由。
      在Flask程序中,定義路由的最簡便方式是使用程序實例提供的app. route裝飾器,把裝飾的函數注冊為路由。路由映射關系如圖所示。
      
      

      image

      5.模板

      模板是一個包含響應文本的文件,其中包含用占位變量表示的動態部分,其具體值只在請求的上下文中才能知道。使用真實值替換變量,再返回最終得到的響應字符串,這一過程稱為渲染。為了渲染模板,Flask使用了一個名為
      Jinja2的強大模板引擎。
      
      render_template('tempalta_name.html',temolate_val = name)
      第一個參數是渲染的模板名稱 , 其余為模板中的變量的值
      
      例如下面代碼中的 return render_template('index.html',hero1=hero,h = hero[num])
      如果在視圖函數中調用代碼,則會渲染tempales目錄下的index.html模板文件,并將模板文件中的{{hero1}} 使用hero替代
      

      6.項目代碼

      // flask/app.py
      
      // index.html是在tempales文件夾中,且tempales文件夾必須要與 運行的文件(調用它的文件app.py)同級。
      
      from flask import Flask, render_template
      from random import randint
      app = Flask(__name__)
      
      hero = ['安琪拉', '白起', '老夫子', '不知火舞', '妲己', '狄仁杰', '典韋', '韓信', '劉邦', '劉禪', '魯班七號', '墨子',
              '孫臏', '孫尚香', '孫悟空',
              '項羽', '亞瑟', '周瑜', '莊周', '蔡文姬', '武則天', '廉頗', '程咬金', '后羿', '扁鵲', '鐘無艷', '花木蘭',
              '小喬', '王昭君', '虞姬', '甄姬',
              '李元芳', '張飛', '劉備', '牛魔', '張良', '蘭陵王', '露娜', '東皇太一', '貂蟬', '達摩', '曹操', '羋月', '阿軻',
              '高漸離', '鐘馗', '關羽',
              '李白', '宮本武藏', '呂布', '嬴政', '娜可露露', '趙云', '姜子牙', '橘右京', '干將莫邪', '鬼谷子', '諸葛亮',
              '安其拉', '白起', '不知火舞',
              '妲己', '狄仁杰', '典韋', '韓信', '老夫子', '劉邦', '干將莫邪', '劉禪', '魯班七號', '墨子', '孫臏', '孫尚香',
              '孫悟空', '項羽', '亞瑟',
              '周瑜', '莊周', '蔡文姬', '甄姬', '廉頗', '程咬金', '后羿', '扁鵲', '大喬', '鐘無艷', '小喬', '王昭君', '虞姬',
              '李元芳', '張飛', '劉備',
              '牛魔張良', '蘭陵王', '露娜', '貂蟬', '達摩', '曹操', '羋月', '荊軻', '高漸離', '鐘馗', '花木蘭', '關羽',
              '李白', '宮本武藏', '呂布',
              '嬴政', '娜可露露', '武則天', '趙云', '姜子牙','戈亞','海月']
      
      @app.route("/index")
      def index():
          return render_template('index.html', hero=hero)
      
      @app.route("/choujiang")
      def choujiang():
              num = randint(0,len(hero)-1)
              return render_template('index.html',hero=hero,h = hero[num])
      
      app.run(debug=True)
      
      
      // flask/templates/index.html  ,這里可以自己利用去美化前端頁面
      
      <!DOCTYPE html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <title>Title</title>
      </head>
      <body>
          {{ hero1 }}<br/><br/><br/>
          <a href="/choujiang">隨機抽取</a></br></h1>
          <h1>你抽到的英雄是 : {{ h }}</h1>
      </body>
      </html>
      

      7.實現效果

      image

      8.正則技巧

      我這里使用的是sublime中的正則轉換

      image

      寫正則

      image

      轉換后效果

      image

      參考文章:   //建議讀一下
      
      什么是框架(https://zhuanlan.zhihu.com/p/114189046)  
      python flask框架(https://blog.csdn.net/qq_39838607/article/details/119563692)
      
      
      posted @ 2022-11-02 16:15  Liberty碼農志  閱讀(816)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲日韩性欧美中文字幕| 欧美亚洲综合久久偷偷人人| 日本不卡片一区二区三区| 国产精品久久久久久久9999| 99精品国产综合久久久久五月天 | 久久一亚色院精品全部免费| 久久综合色之久久综合 | 中文字幕国产精品综合| 在线播放国产精品三级网| 无码人妻aⅴ一区二区三区蜜桃| 亚洲色成人网站www永久男男| 美日韩精品一区二区三区| 国产成人精品视频不卡| 亚洲国产欧美在线人成| 天堂一区二区三区av| 2019国产精品青青草原| 国产精品 无码专区| 欧美、另类亚洲日本一区二区| 男女啪啪免费观看网站| 国产在线观看播放av| 中文国产日韩欧美二视频| 日本一区不卡高清更新二区| 五月天天天综合精品无码| 国产小视频一区二区三区| 日韩中文字幕国产精品| 四虎成人精品在永久在线| 久久a级片| 精品国产粉嫩一区二区三区| 亚洲人成小说网站色在线| 四虎永久地址www成人| 国产jlzzjlzz视频免费看 | 国产精品一区二区三区性色| 电影在线观看+伦理片| 精品一区二区免费不卡| 综合久青草视频在线观看| 欧美亚洲国产一区二区三区| 日韩精品中文字幕有码| 少妇人妻偷人精品无码视频| 亚洲日韩在线中文字幕第一页 | 亚洲国产精品一区二区久| 露脸一二三区国语对白|