欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

如何理解Python全棧中的Flask

本篇文章給大家分享的是有關(guān)如何理解Python全棧中的Flask,小編覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

專注于為中小企業(yè)提供網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)建平免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千余家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。

前言

Python Web框架里比較有名當(dāng)屬Django,Django功能全面,它提供一站式解決方案,集成了MVT(Model-View-Template)和ORM,以及后臺管理。但是缺點也很明顯,它偏重。就像是一個裝潢好的房子,它提供好了你要用的東西,直接拿來用就可以。

Flask相對于Django而言是輕量級的Web框架。和Django不同,F(xiàn)lask輕巧、簡潔,通過定制第三方擴展來實現(xiàn)具體功能。

可定制性,通過擴展增加其功能,這是Flask最重要的特點。Flask的兩個主要核心應(yīng)用是Werkzeug和模板引擎Jinja。 

WSGI

Web Server Gateway Interface(Web服務(wù)器網(wǎng)關(guān)接口,WSGI)已被用作Python Web應(yīng)用程序開發(fā)的標(biāo)準(zhǔn)。 WSGI是Web服務(wù)器和Web應(yīng)用程序之間通用接口的規(guī)范。

Werkzeug

它是一個WSGI工具包,它實現(xiàn)了請求,響應(yīng)對象和實用函數(shù)。這使得能夠在其上構(gòu)建web框架。 Flask框架使用Werkzeug作為其基礎(chǔ)之一。

jinja2

jinja2是Python的一個流行的模板引擎。Web模板系統(tǒng)將模板與特定數(shù)據(jù)源組合以呈現(xiàn)動態(tài)網(wǎng)頁。

Flask通常被稱為微框架。 它旨在保持應(yīng)用程序的核心簡單且可擴展。Flask沒有用于數(shù)據(jù)庫處理的內(nèi)置抽象層,也沒有形成驗證支持。相反,F(xiàn)lask支持?jǐn)U展以向應(yīng)用程序添加此類功能。一些受歡迎的Flask擴展將在本教程后續(xù)章節(jié)進行討論。

Flask

Flask擴展包:

  • Flask-SQLalchemy:操作數(shù)據(jù)庫

  • Flask-migrate:管理遷移數(shù)據(jù)庫

  • Flask-Mail:郵件

  • Flask-WTF:表單

  • Flask-script:插入腳本

  • Flask-Login:認(rèn)證用戶狀態(tài)

  • Flask-RESTful:開發(fā)REST API的工具

  • Flask-Bootstrap:集成前端Twitter Bootstrap框架

  • Flask-Moment:本地化日期和時間

新建flask項目:

如何理解Python全棧中的Flask

 運行如下:

如何理解Python全棧中的Flask

必須在項目中導(dǎo)入Flask模塊。 Flask類的一個對象是我們的WSGI應(yīng)用程序。

Flask構(gòu)造函數(shù)使用當(dāng)前模塊(__name __)的名稱作為參數(shù)。

以下是實例化一個Flask對象可填的參數(shù),及其默認(rèn)值:

  • template_folder:模板所在文件夾的名字, 默認(rèn)就是templates

  • root_path:可以不用填,會自動找到,當(dāng)前執(zhí)行文件,所在目錄地址在return render_template時會將上面兩個進行拼接,找到對應(yīng)的模板地址

  • static_folder:靜態(tài)文件所在文件的名字,默認(rèn)是static,可以不用填

  • static_url_path:靜態(tài)文件的地址前綴,寫成什么,訪問靜態(tài)文件時,就要在前面加上這個

instance_path和instance_relative_config是配合來用的、這兩個參數(shù)是用來找配置文件的,當(dāng)用app.config.from_pyfile('settings.py')這種方式導(dǎo)入配置文件的時候會用到

  • instance_relative_config:默認(rèn)為False,當(dāng)設(shè)置為True時,from_pyfile會從instance_path指定的地址下查找文件。

  • instsnce_path:指定from_pyfile查詢文件的路徑,不設(shè)置時,默認(rèn)尋找和app.run()的執(zhí)行文件同級目錄下的instance文件夾,如果配置了instance_path(注意需要是絕對路徑),就會從指定的地址下里面的文件

Flask類的route()函數(shù)是一個裝飾器,它告訴應(yīng)用程序哪個URL應(yīng)該調(diào)用相關(guān)的函數(shù)。

app.route(rule, options)
  • rule 參數(shù)表示與該函數(shù)的URL綁定。

  • options 是要轉(zhuǎn)發(fā)給基礎(chǔ)Rule對象的參數(shù)列表。

在上面的示例中,'/ ' URL與hello_world()函數(shù)綁定。因此,當(dāng)在瀏覽器中打開web服務(wù)器的主頁時,將呈現(xiàn)該函數(shù)的輸出。

application對象的add_url_rule()函數(shù)也可用于將URL與函數(shù)綁定,如下:

def hello_world():
   return ‘hello world’
app.add_url_rule(‘/’, ‘hello’,hello_world)

最后,F(xiàn)lask類的run()方法在本地開發(fā)服務(wù)器上運行應(yīng)用程序。

app.run(host, port, debug, options)
  • host:監(jiān)聽的主機名

  • post:監(jiān)聽的主機端口,默認(rèn)5000

  • debug:調(diào)試模式,默認(rèn)false,設(shè)置為frue則顯示調(diào)試信息

  • options:要轉(zhuǎn)發(fā)到底層的werkzeng服務(wù)器

給路由傳參示例:

from flask importFlask

app = Flask(__name__)
@app.route('/id/<int:idn>')def hello_world(idn):
   return 'HelloWorld! %d' %idn
if __name__ == '__main__':
   app.run()

路由傳遞的參數(shù)默認(rèn)當(dāng)做string處理,這里指定int,還支持float,path,尖括號中冒號后面的內(nèi)容是動態(tài)的。

返回狀態(tài)碼示例:

如何理解Python全棧中的Flask

abort函數(shù):

如果在視圖函數(shù)執(zhí)行過程中,出現(xiàn)了異常錯誤,我們可以使用abort函數(shù)立即終止視圖函數(shù)的執(zhí)行。通過abort函數(shù),可以向前端返回一個http標(biāo)準(zhǔn)中存在的錯誤狀態(tài)碼,表示出現(xiàn)的錯誤信息。

使用abort拋出一個http標(biāo)準(zhǔn)中不存在的自定義的狀態(tài)碼,沒有實際意義。如果abort函數(shù)被觸發(fā),其后面的語句將不會執(zhí)行。其類似于python中raise。

from flask importFlask,abort

app = Flask(__name__)
@app.route('/id/<int:idn>')def hello_world(idn):
   abort(403)
   return 'HelloWorld! %d' %idn, 888
if __name__ == '__main__':
   app.run()

在Flask中通過裝飾器來實現(xiàn)捕獲異常,errorhandler()接收的參數(shù)為異常狀態(tài)碼。視圖函數(shù)的參數(shù),返回的是錯誤信息。

重定向redirect示例:

from flask importFlask,redirect

app = Flask(__name__)
@app.route('/')def hello_world():
   return redirect('https://www.baidu.com')
if __name__ == '__main__':
   app.run()

效果如下:

如何理解Python全棧中的Flask

這里再介紹一下url_for(),url_for()函數(shù)對于動態(tài)構(gòu)建特定函數(shù)的URL非常有用。該函數(shù)接受函數(shù)的名稱作為第一個參數(shù),以及一個或多個關(guān)鍵字參數(shù),每個參數(shù)對應(yīng)于URL的變量部分。

如下:

@app.route('/user/<name>')def hello_user(name):
   if name=='admin':
      return redirect(url_for('hello_admin'))
   else:
      return redirect(url_for('hello_guest',guest =name))

HTTP方法:

Http協(xié)議是萬維網(wǎng)中數(shù)據(jù)通信的基礎(chǔ)。在該協(xié)議中定義了從指定URL檢索數(shù)據(jù)的不同方法。

方法介紹:

  • GET:以未加密的形式將數(shù)據(jù)發(fā)送到服務(wù)器獲取響應(yīng)內(nèi)容

  • POST: 用于將HTML表單數(shù)據(jù)上傳到服務(wù)器

  • PUT:用上傳的內(nèi)容替換目標(biāo)資源的數(shù)據(jù)

  • DELETE:刪除由URL給出的目標(biāo)資源的數(shù)據(jù)

  • HEAD: 和GET方法相同,但沒響應(yīng)體

默認(rèn)情況下,F(xiàn)lask路由響應(yīng)GET請求。但是,可以通過為route()裝飾器提供方法參數(shù)來更改此首選項。

為了演示在URL路由中使用POST方法,首先讓我們創(chuàng)建一個HTML表單,并使用POST方法將表單數(shù)據(jù)發(fā)送到URL。

login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
   <body>

      <form action = "http://localhost:5000/login"method = "post">
         <p>Enter Name:</p>
         <p><input type = "text" name = "nm"/></p>
         <p><input type = "submit" value = "submit"/></p>
      </form>

   </body>
</html>

loginok.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h2>hello {
  
  
  { name }}</h2>
</body>
</html>

WC_public_flask.py

from flask importFlask, render_template, request

app = Flask(__name__, template_folder='templates')
@app.route('/')def login():
   return render_template('login.html')
@app.route('/login',methods = ['POST', 'GET'])def loginok():
   if request.method== 'POST':
      user = request.form['nm']
      return render_template('loginok.html',name =user)
   else:
      user = request.args.get('nm')
      return render_template('loginok.html',name =user)
if __name__ == '__main__':
   app.run(debug = True)

以上就是如何理解Python全棧中的Flask,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降摹OM隳芡ㄟ^這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)站欄目:如何理解Python全棧中的Flask
轉(zhuǎn)載來源:http://www.chinadenli.net/article42/piioec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷網(wǎng)站導(dǎo)航定制開發(fā)網(wǎng)站建設(shè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化