麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Python > 正文

Python學習5-Flask網絡框架

2019-11-06 06:29:13
字體:
來源:轉載
供稿:網友
communit.best_partition 是社區劃分方法,算法是根據Vincent D.Blondel等人于2008提出,是基于modularity optimization的heuristic方法。

Flask 框架

這里寫圖片描述

為了理解 Flask框架是如何抽象出Web開發中的共同部分,我們先來看看Web應用程序的一般流程。對于Web應用來說,當客戶端想要獲取動態資源 時,就會發起一個HTTP請求(比如用瀏覽器訪問一個 URL),Web應用程序會在后臺進行相應的業務處理,(從數據庫或者進行一些計算操作等)取出用戶需要的數據,生成相應的HTTP響應(當然,如果訪問靜態資源,則直接返回資源即可,不需要進行業務處理)。整個處理過程如下圖所示:

這里寫圖片描述


實際應用中, 不同的請求可能會調用相同的處理邏輯 。這里有著相同業務處理邏輯的 HTTP 請求可以用一類 URL 來標識。比如論壇站點中,對于所有的獲取Topic內容的請求而言,可以用 topic// 這類URL來表示,這里的 topic_id 用以區分不同的topic。接著在后臺定義一個 get_topic(topic_id) 的函數,用來獲取topic相應的數據,此外還需要建立URL和函數之間的一一對應關系。這就是Web開發中所謂的 路由分發 ,如下圖所示: 這里寫圖片描述 Flask底層使用 werkzeug 來做路由分發,代碼寫起來十分簡單,如下:

@app.route('/topic/<int:topic_id>/') defget_topic(topic_id):# Do some cal or read from database# Get the data we need.

通過業務邏輯函數拿到數據后,接下來需要根據這些數據生成HTTP響應(對于Web應用來說,HTTP響應一般是一個HTML文件)。Web開發中的一般做法是提供一個HTML模板文件,然后將數據傳入模板,經過渲染后得到最終需要的HTML響應文件。

一種比較常見的場景是, 請求雖然不同,但響應中數據的展示方式是相同的 。仍以論壇為例,對不同topic而言,其具體topic content雖然不同,但頁面展示的方式是一樣的,都有標題攔,內容欄等。也就是說,對于 topic 來說,我們只需提供一個HTML模板,然后傳入不同topic數據,即得到不同的HTTP響應。這就是所謂的 模板渲染 ,如下圖所示: 這里寫圖片描述 Flask 使用 Jinja2 模板渲染引擎來做模板渲染,代碼如下:

@app.route('/topic/<int:topic_id>/')defget_topic(topic_id):# Do some cal or read from database# Get the data we need.returnrender_template('path/to/template.html', data_needed)

總結一下,Flask處理一個請求的流程就是,首先根據 URL 決定由那個函數來處理,然后在函數中進行操作,取得所需的數據。再將數據傳給相應的模板文件中,由Jinja2 負責渲染得到 HTTP 響應內容,然后由Flask返回響應內容。

Flask也被稱為 “microframework” ,因為它使用簡單的核心,用 extension。增加其他功能。

Flask沒有默認使用的數據庫、窗體驗證工具。然而,Flask保留了擴增的彈性,可以用Flask-extension加入這些功能:ORM、窗體驗證工具、文件上傳、各種開放式身份驗證技術。最新版本為0.11。 Flask是一個使用 Python 編寫的輕量級 Web 應用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎則使用 Jinja2 。Flask使用 BSD 授權。 flask默認端口是5000。 Flask簡單易學,下面是Flask版的hello world(hello.py):

from flask import Flaskapp = Flask(__name__)@app.route("/")def hello(): return "Hello World!"if __name__ == "__main__": app.run()重定向和錯誤 你可以用 redirect() 函數把用戶重定向到其它地方。放棄請求并返回錯誤代碼,用 abort()函數。這里是一個它們如何使用的例子:from flask import abort, redirect, [email protected]('/')def index(): return redirect(url_for('login'))@app.route('/login')def login(): abort(401) this_is_never_executed()

這是一個相當無意義的例子因為用戶會從主頁重定向到一個不能訪問的頁面 (401 意味著禁止訪問),但是它展示了重定向是如何工作的。

默認情況下,錯誤代碼會顯示一個黑白的錯誤頁面。如果你要定制錯誤頁面, 可以使用 errorhandler() 裝飾器:

from flask import [email protected](404)def page_not_found(error): return render_template('page_not_found.html'), 404

注意 render_template() 調用之后的 404 。這告訴 Flask,該頁的錯誤代碼是 404 ,即沒有找到。默認為 200,也就是一切正常。

是JSON格式的數據,是經過Flask框架的 jsonify模塊格式化過的數據。return jsonify(nodes=data[0], links=data[1])

學習參考: 【1】快速入門:http://docs.jinkan.org/docs/flask/quickstart.html 【2】官網:http://flask.pocoo.org/ 【3】圖文快速講解: http://www.open-open.com/lib/view/open1477879623923.html


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 亚洲免费视频一区 | 日韩一级免费毛片 | 久久精品视频12 | 国产日韩中文字幕 | 亚洲va在线 | 国产免费一区二区三区最新不卡 | 黄色成年在线观看 | 香蕉视频破解 | 制服丝袜日日夜夜 | 黄色免费入口 | 国产亚洲高清视频 | 欧美一级特黄a | 国产午夜精品理论片a级探花 | 99国产精品自拍 | 国产妇女乱码一区二区三区 | 国产午夜亚洲精品理论片大丰影院 | 精品一区二区三区中文字幕老牛 | 成人午夜免费看 | 日本视频免费看 | 亚洲国产精品一区二区精品 | 日本精品久久久久久草草 | 日本不卡一区二区三区在线观看 | 国产品久久 | 性爱视频在线免费 | 国产电影av在线 | 一级在线免费 | 国产精品爱久久久久久久 | 热re91久久精品国产99热 | 免费国产自久久久久三四区久久 | 毛片免费看电影 | 人人做人人看 | 国产一级毛片高清视频完整版 | 精品久久中文字幕 | 姑娘第四集免费看视频 | 在线成人av | 操操操操操 | 蜜桃成品人免费视频 | 国产亚洲精品久久久久5区 日韩一级片一区二区三区 国产精品久久久久av | 成人羞羞在线观看网站 | 欧美a视频 | 国产毛片网站 |