亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

從零開始搭建論壇(三):Flask框架簡(jiǎn)單介紹

Alan / 1443人閱讀

摘要:我們的論壇項(xiàng)目就使用了該框架。此外,麥子學(xué)院也有一個(gè)入門視頻教程,一共小時(shí)的視頻教程,涵蓋開發(fā)的方方面面,包括環(huán)境的搭建,語(yǔ)法介紹,項(xiàng)目結(jié)構(gòu)的組織,全球化,單元測(cè)試等內(nèi)容。博客地址更多閱讀的機(jī)制三個(gè)框架的對(duì)比

前面兩篇文章中我們已經(jīng)了解 Web(HTTP)服務(wù)器,Web應(yīng)用程序,Web框架,WSGI這些 Python Web 開發(fā)中的概念。我們知道,Web框架通過(guò)將不同Web應(yīng)用程序中的共性部分給抽象出來(lái),提供一系列通用的接口,從而避免開發(fā)者做重復(fù)性工作,讓其將精力放在業(yè)務(wù)相關(guān)的實(shí)現(xiàn)。

接下來(lái)一起來(lái)看一個(gè)具體的 Web 框架,這里選擇 Flask,因?yàn)樗且粋€(gè)年輕充滿活力的微框架,有著眾多的擁護(hù)者,文檔齊全,社區(qū)活躍度高。我們的論壇項(xiàng)目 就使用了該框架。

Flask 框架

為了理解 Flask 框架是如何抽象出Web開發(fā)中的共同部分,我們先來(lái)看看Web應(yīng)用程序的一般流程。對(duì)于Web應(yīng)用來(lái)說(shuō),當(dāng)客戶端想要獲取動(dòng)態(tài)資源時(shí),就會(huì)發(fā)起一個(gè)HTTP請(qǐng)求(比如用瀏覽器訪問(wèn)一個(gè) URL),Web應(yīng)用程序會(huì)在后臺(tái)進(jìn)行相應(yīng)的業(yè)務(wù)處理,(從數(shù)據(jù)庫(kù)或者進(jìn)行一些計(jì)算操作等)取出用戶需要的數(shù)據(jù),生成相應(yīng)的HTTP響應(yīng)(當(dāng)然,如果訪問(wèn)靜態(tài)資源,則直接返回資源即可,不需要進(jìn)行業(yè)務(wù)處理)。整個(gè)處理過(guò)程如下圖所示:

實(shí)際應(yīng)用中,不同的請(qǐng)求可能會(huì)調(diào)用相同的處理邏輯。這里有著相同業(yè)務(wù)處理邏輯的 HTTP 請(qǐng)求可以用一類 URL 來(lái)標(biāo)識(shí)。比如論壇站點(diǎn)中,對(duì)于所有的獲取Topic內(nèi)容的請(qǐng)求而言,可以用 topic// 這類URL來(lái)表示,這里的 topic_id 用以區(qū)分不同的topic。接著在后臺(tái)定義一個(gè) get_topic(topic_id) 的函數(shù),用來(lái)獲取topic相應(yīng)的數(shù)據(jù),此外還需要建立URL和函數(shù)之間的一一對(duì)應(yīng)關(guān)系。這就是Web開發(fā)中所謂的路由分發(fā),如下圖所示:

Flask底層使用werkzeug來(lái)做路由分發(fā),代碼寫起來(lái)十分簡(jiǎn)單,如下:

@app.route("/topic//") 
def get_topic(topic_id):
    # Do some cal or read from database
    # Get the data we need.

通過(guò)業(yè)務(wù)邏輯函數(shù)拿到數(shù)據(jù)后,接下來(lái)需要根據(jù)這些數(shù)據(jù)生成HTTP響應(yīng)(對(duì)于Web應(yīng)用來(lái)說(shuō),HTTP響應(yīng)一般是一個(gè)HTML文件)。Web開發(fā)中的一般做法是提供一個(gè)HTML模板文件,然后將數(shù)據(jù)傳入模板,經(jīng)過(guò)渲染后得到最終需要的HTML響應(yīng)文件。

一種比較常見(jiàn)的場(chǎng)景是,請(qǐng)求雖然不同,但響應(yīng)中數(shù)據(jù)的展示方式是相同的。仍以論壇為例,對(duì)不同topic而言,其具體topic content雖然不同,但頁(yè)面展示的方式是一樣的,都有標(biāo)題攔,內(nèi)容欄等。也就是說(shuō),對(duì)于 topic 來(lái)說(shuō),我們只需提供一個(gè)HTML模板,然后傳入不同topic數(shù)據(jù),即得到不同的HTTP響應(yīng)。這就是所謂的模板渲染,如下圖所示:

Flask 使用 Jinja2 模板渲染引擎來(lái)做模板渲染,代碼如下:

@app.route("/topic//")
def get_topic(topic_id):
    # Do some cal or read from database
    # Get the data we need.
    return render_template("path/to/template.html", data_needed)

總結(jié)一下,F(xiàn)lask處理一個(gè)請(qǐng)求的流程就是,首先根據(jù) URL 決定由那個(gè)函數(shù)來(lái)處理,然后在函數(shù)中進(jìn)行操作,取得所需的數(shù)據(jù)。再將數(shù)據(jù)傳給相應(yīng)的模板文件中,由Jinja2 負(fù)責(zé)渲染得到 HTTP 響應(yīng)內(nèi)容,然后由Flask返回響應(yīng)內(nèi)容。

Flask 入門

關(guān)于 Flask 框架的學(xué)習(xí),不建議直接讀官網(wǎng)文檔,雖然這是一手的權(quán)威資料,但并不適合初學(xué)者入手。這里推薦幾個(gè)學(xué)習(xí)資料,可以幫助新手很快的入門:

匯智網(wǎng)flask框架教程:一個(gè)非常適合入門的精簡(jiǎn)教程,主要分為七部分:

快速入門

路由:URL 規(guī)則與視圖函數(shù)

請(qǐng)求、應(yīng)答與會(huì)話

上下文對(duì)象:Flask 核心機(jī)制

模版:分離數(shù)據(jù)與視圖

訪問(wèn)數(shù)據(jù)庫(kù):SQLAlchemy簡(jiǎn)介

藍(lán)圖:Flask應(yīng)用組件化

教程簡(jiǎn)練地總結(jié)了 Flask 最核心的內(nèi)容,并且還提供了一個(gè)簡(jiǎn)單的在線練習(xí)環(huán)境,方便一邊學(xué)習(xí)理論一邊動(dòng)手實(shí)踐。

此外,麥子學(xué)院也有一個(gè) Flask入門 視頻教程,一共8小時(shí)的視頻教程,涵蓋flask web 開發(fā)的方方面面,包括環(huán)境的搭建,flask 語(yǔ)法介紹,項(xiàng)目結(jié)構(gòu)的組織,flask 全球化,單元測(cè)試等內(nèi)容。視頻作者有 17 年軟件開發(fā)經(jīng)驗(yàn),曾任微軟深圳技術(shù)經(jīng)理及多家海外機(jī)構(gòu)擔(dān)任技術(shù)顧問(wèn),夠牛!視頻講的也確實(shí)不錯(cuò)。

如果上面兩個(gè)不能滿足你,那么還可以看 Flask Web開發(fā):基于Python的Web應(yīng)用開發(fā)實(shí)戰(zhàn) 這本有著 8.6 評(píng)分的書,相信沒(méi)看完就躍躍欲試想寫點(diǎn)什么了。這么優(yōu)秀的框架,Github 上當(dāng)然也有 awesome-flask了,想深入學(xué)習(xí)flask的話,這里不失為一個(gè)好的資源帖。

本篇大概談了下 Flask 的路由分發(fā)和模版渲染,下篇我們會(huì)繼續(xù)講Flask使用中的一些問(wèn)題。

博客地址

更多閱讀

What is the purpose of Flask"s context stacks?
Flask 的 Context 機(jī)制
Flask、Django、Pyramid三個(gè)框架的對(duì)比

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/44228.html

相關(guān)文章

  • 從零開始搭建論壇(一):Web服務(wù)器與Web框架

    摘要:服務(wù)器通過(guò)協(xié)議與客戶端通信,因此也被稱為服務(wù)器。本文標(biāo)題為從零開始搭建論壇一服務(wù)器與框架本文鏈接為更多閱讀自己動(dòng)手開發(fā)網(wǎng)絡(luò)服務(wù)器一自己動(dòng)手開發(fā)網(wǎng)絡(luò)服務(wù)器二自己動(dòng)手開發(fā)網(wǎng)絡(luò)服務(wù)器三服務(wù)器網(wǎng)關(guān)接口實(shí)現(xiàn)原理分析最佳實(shí)踐指南應(yīng)用淺談框架編程簡(jiǎn)介 之前用 Django 做過(guò)一個(gè)小的站點(diǎn),感覺(jué)Django太過(guò)笨重,于是就準(zhǔn)備換一個(gè)比較輕量級(jí)的 Web 框架來(lái)玩玩。Web.py 作者已經(jīng)掛掉,項(xiàng)目好...

    dantezhao 評(píng)論0 收藏0
  • 從零開始搭建論壇(二):Web服務(wù)器網(wǎng)關(guān)接口

    摘要:在從零開始搭建論壇一服務(wù)器與框架中我們弄清楚了服務(wù)器應(yīng)用程序框架的概念??蚣軕?yīng)用生成狀態(tài)碼以及響應(yīng)報(bào)頭,然后將二者傳遞至,等待服務(wù)器保存。添加響應(yīng)頭,狀態(tài)碼返回響應(yīng)信息創(chuàng)建一個(gè)服務(wù)器實(shí)例目前支持的成熟服務(wù)器有很多,是相當(dāng)不錯(cuò)的一個(gè)。 在 從零開始搭建論壇(一):Web服務(wù)器與Web框架 中我們弄清楚了Web 服務(wù)器、Web 應(yīng)用程序、Web框架的概念。對(duì)于 Python 來(lái)說(shuō),越來(lái)越多...

    Astrian 評(píng)論0 收藏0
  • 從零開始Flask 搭建一個(gè)網(wǎng)站(四)

    摘要:前言從零開始用搭建一個(gè)網(wǎng)站三介紹了網(wǎng)頁(yè)前端與后端前端與前端之間數(shù)據(jù)的交流。作者極光為極光團(tuán)隊(duì)賬號(hào),歡迎關(guān)注原文從零開始用搭建一個(gè)網(wǎng)站四知乎專欄極光日?qǐng)?bào) 前言 從零開始用 Flask 搭建一個(gè)網(wǎng)站(三) 介紹了網(wǎng)頁(yè)前端與后端、前端與前端之間數(shù)據(jù)的交流。本節(jié)主要介紹一下如何應(yīng)用 Flask-OAuthlib, 使用 Flask-OAuthlib 就可以輕松地請(qǐng)求第三方應(yīng)用提供的 API 。...

    CarterLi 評(píng)論0 收藏0
  • 從零開始Flask 搭建一個(gè)網(wǎng)站(

    摘要:從零開始用搭建一個(gè)網(wǎng)站二介紹了有關(guān)于數(shù)據(jù)庫(kù)的運(yùn)用,接下來(lái)我們?cè)谕晟埔幌聰?shù)據(jù)在前端以及前端到后端之間的交互。在中有和兩個(gè)函數(shù),分別是請(qǐng)求成功和失敗的回調(diào)函數(shù)。作者極光為極光團(tuán)隊(duì)賬號(hào),歡迎關(guān)注原文從零開始用搭建一個(gè)網(wǎng)站三知乎專欄極光日?qǐng)?bào) 從零開始用 Flask 搭建一個(gè)網(wǎng)站(二) 介紹了有關(guān)于數(shù)據(jù)庫(kù)的運(yùn)用,接下來(lái)我們?cè)谕晟埔幌聰?shù)據(jù)在前端以及前端到后端之間的交互。本節(jié)涉及到前端,因此也會(huì)講解...

    mykurisu 評(píng)論0 收藏0
  • 從零開始Flask 搭建一個(gè)網(wǎng)站(二)

    摘要:從零開始用搭建一個(gè)網(wǎng)站一介紹了如何搭建環(huán)境,以及應(yīng)用基本項(xiàng)目結(jié)構(gòu)。我們要搭建的網(wǎng)站是管理第三方集成的控制臺(tái),類似于。我們先定義一個(gè)用戶模型然后在文件夾下創(chuàng)建一個(gè)文件。 從零開始用 Flask 搭建一個(gè)網(wǎng)站(一) 介紹了如何搭建 Python 環(huán)境,以及 Flask 應(yīng)用基本項(xiàng)目結(jié)構(gòu)。我們要搭建的網(wǎng)站是管理第三方集成的控制臺(tái),類似于 Slack。 本篇主要講解數(shù)據(jù)如何在 Flask 應(yīng)用...

    Coly 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<