99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

Pyramid 應(yīng)用程序配置

2023-04-03 13:55 更新

Pyramid應(yīng)用程序?qū)ο笥幸粋€(gè)應(yīng)用程序注冊(cè)表,用于存儲(chǔ)視圖函數(shù)與路由的映射,以及其他特定應(yīng)用程序的組件注冊(cè)。配置器類(lèi)被用來(lái)建立應(yīng)用注冊(cè)表。

配置器的生命周期是由一個(gè)返回應(yīng)用程序?qū)ο蟮纳舷挛墓芾砥鞴芾淼摹?/p>

with Configurator(settings=settings) as config:
   #configuration methods
   app = config.make_wsgi_app()

配置器類(lèi)定義了以下重要的方法來(lái)定制應(yīng)用程序 —

add_route()

這個(gè)方法為URL調(diào)度注冊(cè)了一個(gè)路由。以下參數(shù)被使用 –

  • name – 第一個(gè)必要的位置參數(shù)必須是路由的唯一名稱(chēng)。這個(gè)名字在注冊(cè)視圖或生成URL時(shí)用來(lái)識(shí)別路由。
  • pattern – 第二個(gè)必要的位置參數(shù)是一個(gè)代表URL路徑的字符串,可以選擇包含變量占位符,用于解析URL中的變量數(shù)據(jù)。占位符由大括號(hào)包圍。例如,”/students/{id}”。

  • request_method – 這個(gè)值可以是 “GET”、”P(pán)OST”、”HEAD”、”DELETE”、”P(pán)UT “中的一個(gè)。只有這種類(lèi)型的請(qǐng)求才會(huì)被匹配到路由中。

add_view()

該方法在應(yīng)用程序注冊(cè)表中添加一個(gè)視圖配置。它將一個(gè)視圖函數(shù)綁定到配置中的 route_name 上。需要的參數(shù)是 –

  • view – 視圖函數(shù)的名稱(chēng)。
  • route_name – 一個(gè)字符串,必須與路由配置聲明的名稱(chēng)一致。

  • request_method – 代表HTTP REQUEST_METHOD的字符串(如 “GET”、”P(pán)OST”、”P(pán)UT”、”DELETE”、”HEAD “或 “OPTIONS”),或者包含一個(gè)或多個(gè)這些字符串的元組。

add_static_view()

該方法添加一個(gè) 視圖 ,用于渲染靜態(tài)資產(chǎn),如圖片和CSS文件,并使用以下參數(shù)—-。

  • name – 這個(gè)參數(shù)是一個(gè)字符串,代表一個(gè)與應(yīng)用程序相關(guān)的本地URL前綴,或者一個(gè)完整的URL。
  • Path – 這個(gè)參數(shù)表示靜態(tài)文件所在磁盤(pán)上的路徑。它的值可以是一個(gè)絕對(duì)路徑或一個(gè)與包相關(guān)的路徑。

這個(gè)方法反過(guò)來(lái)調(diào)用Configurator對(duì)象的 add_route() 方法。

add_notfound_view()

當(dāng)當(dāng)前請(qǐng)求找不到匹配的視圖時(shí),該方法會(huì)添加一個(gè)視圖來(lái)執(zhí)行。下面的代碼顯示了一個(gè)例子 –

from pyramid.config import Configurator
from pyramid.response import Response

def notfound(request):
   return Response('Not Found', status='404 Not Found')

config.add_notfound_view(notfound)

add_forbidden_view()

配置應(yīng)用程序注冊(cè)表,以便定義一個(gè)視圖,在出現(xiàn)HTTPForbidden異常時(shí)被執(zhí)行。參數(shù)列表中包含對(duì)一個(gè)返回403狀態(tài)響應(yīng)的函數(shù)的引用。如果沒(méi)有提供參數(shù),注冊(cè)表會(huì)添加 default_exceptionresponse_view()。

add_exception_view()

該方法導(dǎo)致在配置中添加一個(gè)異常視圖函數(shù),用于指定的異常。

make_wsgi_app()

該方法返回一個(gè)Pyramid WSGI應(yīng)用程序?qū)ο蟆?/p>

scan()

這是一個(gè)注冊(cè)視圖的封裝器。它導(dǎo)入所有應(yīng)用程序模塊,尋找@view_config裝飾器。

對(duì)于每一個(gè)模塊,它用相同的關(guān)鍵字參數(shù)調(diào)用config.add_view(view)。對(duì)scan()函數(shù)的調(diào)用執(zhí)行了對(duì)包和所有子包的所有裝飾的掃描。

一個(gè)典型的執(zhí)行應(yīng)用程序注冊(cè)表配置的語(yǔ)句序列如下代碼片斷所示

from pyramid.config import Configurator

with Configurator() as config:
   config.add_route('hello', '/')
   config.add_view(hello_world, route_name='hello')
   app = config.make_wsgi_app()

這種對(duì)應(yīng)用程序進(jìn)行配置的方法被稱(chēng)為強(qiáng)制性配置。Pyramid提供了另一種配置方法,稱(chēng)為裝飾性配置。

聲明性配置

有時(shí),通過(guò)命令式代碼進(jìn)行配置會(huì)變得很困難,尤其是當(dāng)應(yīng)用程序的代碼分布在許多文件中時(shí)。聲明式配置是一種方便的方法。 pyramid.view 模型定義了 view_config --一個(gè)函數(shù)、類(lèi)或方法裝飾器–它允許在非常接近視圖函數(shù)本身定義的情況下進(jìn)行視圖注冊(cè)。

兩個(gè)重要的參數(shù)被提供給 @view_config() 裝飾器。它們是 route_name 和 request_method。 它們的解釋與Configurator類(lèi)的 add_route() 方法相同。就在它下面的函數(shù)被裝飾了,所以它被綁定到添加到應(yīng)用程序?qū)ο蟮淖?cè)表的路由上。

下面是 hello_world() 視圖函數(shù)的聲明性配置的例子。

from pyramid.response import Response
from pyramid.view import view_config

@view_config(route_name='hello', request_method='GET')
def hello_world(request):
   return Response('Hello World!')

?view_config?裝飾器為?hello_world()?函數(shù)添加了一個(gè)屬性,使其在以后的掃描中可以找到。

例子

配置裝飾和調(diào)用掃描的組合被統(tǒng)稱(chēng)為聲明式配置。下面的代碼用聲明式方法配置了應(yīng)用程序注冊(cè)表。

?scan()?函數(shù)發(fā)現(xiàn)了路由和其映射的視圖,因此需要添加強(qiáng)制性的配置語(yǔ)句。

from wsgiref.simple_server import make_server
from pyramid.config import Configurator
from pyramid.response import Response
from pyramid.view import view_config

@view_config(route_name='hello', request_method='GET')
def hello_world(request):
   return Response('Hello World!')

if __name__ == '__main__':
   with Configurator() as config:
      config.add_route('hello', '/')
      config.scan()
      app = config.make_wsgi_app()
   server = make_server('0.0.0.0', 6543, app)
   server.serve_forever()

掃描器將?view_config?的參數(shù)轉(zhuǎn)換為對(duì)?pyramid.config.Configurator.add_view()?方法的調(diào)用,因此該操作等同于以下語(yǔ)句 ?

config.add_view(hello_world, route_name='hello', request_method='GET')

輸出

上述程序運(yùn)行后,WSGI服務(wù)器啟動(dòng)。當(dāng)瀏覽器訪(fǎng)問(wèn)鏈接?http://localhost:6543/?,”Hello World “的信息會(huì)像以前一樣呈現(xiàn)。

Python Pyramid - 應(yīng)用程序配置


以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)