国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

【Flask】FlaskWeb開發上手點滴(01)-入門

2019-11-14 12:39:09
字體:
來源:轉載
供稿:網友
python版本:3.5flask版本:0.12jinja2:2.94werkzeug:0.11.15

IDE使用pyCharm。

1.1、首例

首先從flask初始化的一個例子說起。 打開pyCharm新建一個Flask的項目之后,會初始化一個Flask的程序目錄(假設創建一個名為flaskblog的項目)。首先來看flaskblog.py這個文件里的代碼: (包含注釋)

#flaskblpg.py#1、初始化:創建一個程序實例from flask import Flaskapp = Flask(__name__)#flask用name這個參數決定程序的根目錄,以便稍后能夠找到相對于程序根目錄的資源文件位置。#2、路由和視圖函數:客戶端把請求發送給web服務器,web服務器再把請求發送給flask程序實例。程序實例需要知道對每個URL請求運行哪些代碼#所以保存了一個URL到Python函數的映射關系。處理URL和函數之間的關系稱為路由。# @app.route('/')flask是使用程序實例提供的app.route修飾器,把修飾的函數注冊為路由。@app.route('/user/<name>')#尖括號中得內容就是動態部分,任何能匹配靜態部分的URL都會映射到這個路由上。# flask支持在路由中使用int(如:@app.route('/user/<int:id>'))/float/path類型.path類型也是字符串,但不把斜線視作分隔符,而將其當做動態片段的一部分。def hello_world(name):# 視圖函數,返回的響應可以是包含HTML的簡單字符串,也可以是復雜的表單 return '<h1>Hello,%s!</h1>' %name#3、啟動服務器:程序實例用run方法啟動flask集成的開發web服務器。服務器啟動后會進入輪詢,等待并處理請求。輪詢會一直運行,直到程序#停止,比如按Ctrl-C鍵。if __name__ == '__main__': app.run(debug=True)#啟用調式模式,ps:flask提供的web服務器不適合在生產環境中使用。

請詳細閱讀注釋,然后在pyCharm中選中flaskblog.py運行(Run),在瀏覽器中測試。在瀏覽器地址欄中輸入http://127.0.0.1:5000/user/imagineXie進行測試。

1.2程序與請求上下文

請求對象封裝了客戶端發送的HTTP請求。在多線程服務器中,多個線程同時處理不同客戶端發送的不同請求時,每個線程看到的request對象必然不同。Falsk使用上下文讓特定的變量在一個線程中全局可訪問,與此同時卻不會干擾其他線程。

Flask兩種上下文: (1)程序上下文

current_app:當前激活程序的程序實例g:處理請求時用作臨時存儲的對象。每次請求都會重設這個變量

(2)請求上下文

request:請求對象,封裝了客戶端發出的HTTP請求中得內容session:用戶會話,用于存儲請求之間需要“記住”的值的詞典

在使用這些變量時,我們需要先激活(push())程序(app_context())或請求上下文,否則會報錯。

1.3請求調度

URL映射是URL和視圖函數之間的對應關系。Falsk使用app.route修飾器或者非修飾器形式的app.add_url_rule()生成映射。

Falsk為每個路由都指定了請求方法,這樣不同的請求方法發送到相同的URL上時,會使用不同的視圖函數進行處理。

1.4請求鉤子

請求鉤子使用修飾器實現。Falsk支持4種鉤子。

before_first_request:注冊一個函數,在處理第一個請求之前運行。before_request:注冊一個函數,在每次請求之前運行。after_request:注冊一個函數,如果沒有未處理的異常拋出,在每次請求之后運行。teardown_request:注冊一個函數,即使有未處理的異常拋出,也在每次請求之后運行。

1.5響應

HTTP響應中一個很重要的部分是“狀態碼”,默認為200,表示請求已被成功處理。

Flask視圖函數還能返回Response對象。make_response()函數可接受1、2或3個參數,并返回一個Response對象。 eg:

from flask import make_response@app.route('/')def index(): response=make_response('<h1>This document carries a cookie!</h1>') response.set_cookie('answer',42) return response

有一種名為“重定向”的特殊響應類型。這種響應沒有頁面文檔,只告訴瀏覽器一個新地址用以加載新頁面。 重定向常使用302狀態碼表示,指向的地址由Location首部提供。Flask提供redirect()輔助函數用于生成這種響應:

from flask import redirect@app.route('/')def index(): return redirect('http://www/example.com')

還有一種響應用于處理錯誤,由abort函數生成:

from flask import abort@app.route('/user/<id>')def get_user(id): user=load_user(id) if nor user: abort(404)return '<h1>Hello,%s</h1>'%user.name

以上例子中,如果URL中動態參數id對應的用戶不存在,就返回狀態碼404。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 三台县| 新竹县| 邳州市| 张家口市| 镇原县| 且末县| 文山县| 冀州市| 社旗县| 连江县| 崇州市| 孙吴县| 罗田县| 红原县| 白朗县| 商南县| 尼勒克县| 甘谷县| 墨竹工卡县| 云浮市| 宁都县| 缙云县| 濉溪县| 德格县| 牙克石市| 九寨沟县| 天峻县| 永春县| 于田县| 布尔津县| 荣昌县| 瑞丽市| 黄大仙区| 安国市| 常州市| 泽普县| 张家口市| 章丘市| 宁津县| 桃园市| 清河县|