国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

[貳]Flask web開發:程序的基本結構

maxmin / 396人閱讀

摘要:本篇對應書本第二章程序的基本結構。初始化導入模塊創建類的實例注對于開發者來說,傳給應用程序構造函數的參數是比較容易弄混淆的。不同的請求方法發送到相同的上時,會使用不同的視圖函數進行處理。

本系列筆記是我閱讀Miguel Grinberg的《Flask Web Development》的筆記,標題與書本同步。希望通過記錄技術筆記的方式促進自己對知識的理解。

本篇對應書本第二章:程序的基本結構。

初始化
from flask import Flask #導入Flask模塊
app = Flask(__name__) #創建Flask類的實例

注:對于Flask開發者來說,傳給Flask應用程序構造函數的name參數是比較容易弄混淆的。Flask使用這個參數來確定應用程序的根目錄,這樣以后可以相對這個路徑來找到資源文件。

路由和視圖函數 注冊新的路由

在Flask應用中,路由是指用戶請求的URL與視圖函數之間的映射。
Flask框架 根據HTTP請求的URL在路由表中匹配預定義的URL規則,找到對應的視圖函數, 并將視圖函數的執行結果返回WSGI服務器。

匹配動態URL

route裝飾器 :可以使用Flask應用實例的route裝飾器將一個URL規則綁定到一個視圖函數上。
下面程序中route裝飾器將根目錄綁定在index視圖上。

@app.route("/")
def index():
    return "

Hello World!

"
URL變量類型過濾
@app.route("/user/")
def user(name):
    return "

Hello, %s

" % name 類似: int 接受整數(float接受浮點數) @app.route("/post/") path轉換器允許規則匹配包含/的字符串。 @app.route("/file/")
啟動服務器
if __name__ == "__main__":
    app.run(debug=True)
    
# 模塊是對象,并且所有的模塊都有一個內置屬性 __name__。
# 一個模塊的 __name__ 的值取決于您如何應用模塊。
# 如果 import 一個模塊,那么模塊__name__ 的值通常為模塊文件名,不帶路徑或者文件擴展名。
# 但是您也可以像一個標準的程序樣直接運行模塊,
# 在這種情況下, __name__ 的值將是一個特別缺省"__main__"。

# debug=True 調試模式開啟
一個完整的程序 hello.py: 一個完整的Flask程序
from flask import Flask
app = Flask(__name__)

@app.route("/")
def index():
    return "

Hello World!

" if __name__ == "__main__" app.run(debug=True)

運行結果如下:

hello.py: 包含動態路由的Flask程序
from flask import Flask
app = Flask(__name__)

@app.route("/")
def index():
    return "

Hello World!

" @app.route("/user/") def user(name): return "

Hello,%s

" % name if __name__ == "__main__" app.run(debug=True) # 定義了動態路由/user/

運行結果如下:

請求-響應循環 程序和請求上下文

請求對象封裝了客戶端發送的HTTP請求。
將請求對象作為參數傳入視圖函數,視圖函數即可訪問請求對象。

from flask import request

@app.route("/")
def index():
    user_agent = request.headers.get("User-Agent")
    return "

Your browser is %s

" % user_agent

Flask上下文全局變量

變量名 上下文 說明
current_app 程序上下文 當前激活程序的程序實例
g 程序上下文 處理請求時用作臨時存儲的對象。每次請求都會重設這個變量。
request 請求上下文 請求對象,封裝了客戶端發出的HTTP請求中的內容。
session 請求上下文 用戶會話,用戶存儲請求之間需要“記住”的值的詞典

程序上下文使用方法:

>>> from hello import app
>>> from flask import current_app
>>> current_app.name
Traceback(most recent call last):
...
RuntimeError:working outside of application context
>>> app_ctx = app.app_context()
>>> app_ctx.push()
>>> current_app.name
"hello"
>>> app_ctx.pop()
# app.app_context()可獲得一個程序上下文
請求調度

URL映射中的HEAD、Options、GET是請求方法,由路由進行處理。
不同的請求方法發送到相同的URL上時,會使用不同的視圖函數進行處理。

請求鉤子

Flask支持以下4種鉤子:

before_first_request:注冊一個函數,在處理第一個請求之前運行。

before_request:注冊一個函數,在每次請求之前運行。

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

teardown_request:注冊一個函數,即使有未處理的異常拋出,也在每次請求之后運行。

響應 創建響應對象并設置Cookie

from flask import make_response

@app.route("/"):
def index():
    response = make_response(

This document carries a cookie.

) response.set_cookie("answer","42") return response
重定向
from flask import redirect

@app.route("/")
def index():
    return redirect("http://www.example.com")
錯誤處理
from flask import abort

@app.route("/user/")
def get_user(id):
    user = load_user(id)
    if not user:
        abort(404)
    return "

Hello, %s

" % user.name
Flask擴展

Flask被設計為可擴展模式,一些重要功能是用安裝包的形式增加。

使用Flask-Script支持命令行選項
(venv)$pip install flask-script

hello.py:使用Flask-Script

from flask_script import Manager
manager = Manager(app)
# ...
if __name__ == "__main__":
    manager.run()

運行Python程序: python hello.py runserver
web服務器可使用http://a.b.c.d:5000/ 網絡中的任一臺電腦進行訪問,其中"a.b.c.d"是服務器所在計算機的外網的IP地址。
Python hello.py runserver --host 0.0.0.0


本文由?EverFighting?創作,采用?知識共享署名 3.0 中國大陸許可協議?進行許可。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/38079.html

相關文章

  • Flask Web Development —— 基本應用程序結構(上)

    摘要:注對于開發者來說,傳給應用程序構造函數的參數是比較容易弄混淆的。在應程序中定義路由的最便捷的方式是通過顯示定義在應用程序實例之上的裝飾器,注冊被裝飾的函數來作為一個路由。一個常見的模式是使用裝飾器來注冊函數作為一個事件處理程序。 在這一章,你將學習Flask應用程序不同部分。同時你將編寫和運行你的第一個Flask web應用程序。 1、初始化 在這章,你將學到Flask應用程序的不...

    NusterCache 評論0 收藏0
  • Flask Web Development —— 基本應用程序結構(下)

    摘要:有兩類應用級和請求級。一個響應中非常重要的部分是狀態碼,默認設置來指示請求已經成功處理。重定向通常由響應狀態碼注明并且重定向的由頭部的給出。因為這些變化,應用程序獲得一組基本的命令行選項。運行顯示可用信息在應用程序上下文的內部運行一個。 5、請求-響應循環 現在你已經玩過一個基本的Flask應用程序,你也許想要知道更多關于Flask如何施展魔力。下面章節描述了一些框架設計方面的特點。...

    caohaoyu 評論0 收藏0
  • Flask框架基礎(二)

    摘要:處理和函數之間關系的程序稱為路由。模板引擎是由實現的是內置的模板語言參照設計思想設計的,跟差不多渲染模板默認情況下,在程序文件夾中的子文件夾中尋找模板。如果需要可在文件夾中使用子文件夾存放文件。 1 程序的基本結構 1.1初始化 所有Flask 程序都必須創建一個程序實例。Web 服務器使用一種名為Web 服務器網關接口(Web Server Gateway Interface,WSG...

    lpjustdoit 評論0 收藏0
  • Flask Web Development —— 大型應用程序結構(上)

    摘要:被定義在包的構造函數中的應用程序工廠函數會在示例中展示。這個構造函數導入大部分當前需要使用的擴展,但因為沒有應用程序實例初始化它們,它可以被創建但不初始化通過不傳遞參數給它們的構造函數。而應用程序范圍內的錯誤處理則必須使用。 雖然小型web應用程序用單個腳本可以很方便,但這種方法卻不能很好地擴展。隨著應用變得復雜,在單個大的源文件中處理會變得問題重重。 與大多數其他web框架不同,Fl...

    chemzqm 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<