櫻桃包?

子包?

子模塊?

模塊內容?

Cherrypy是一個pythonic的面向對象HTTP框架。

Cherrypy由四個獨立的API層組成,而不是一個。

應用層是最簡單的。Cherrypy應用程序是以類和方法樹的形式編寫的,樹中的每個分支對應于URL路徑中的一個分支。每個方法都是一個“頁面處理程序”,它接收get和post參數作為關鍵字參數,并返回或生成響應的(HTML)主體。特殊方法名“index”用于以斜線結尾的路徑,特殊方法名“default”用于通過單個處理程序處理多個路徑。該層還包括:

  • “exposed”屬性(和cherrypy.expose)

  • 奇瑞皮(Cherrypy.quickstart)()

  • _ cp配置屬性

  • cherrypy.tools(包括cherrypy.session)

  • cherrypy.url()。

環境層由各級開發人員使用。它通過一組頂級對象(默認)提供有關當前請求和響應以及應用程序和服務器環境的信息:

  • cherrypy.request

  • cherrypy.response

  • cherrypy.engine

  • cherrypy.server

  • cherrypy.tree

  • cherrypy.config

  • cherrypy.thread_data

  • cherrypy.log

  • cherrypy.httperror、notfound和httpedirect

  • cherrypy.lib

擴展層允許高級用戶構建和共享自己的插件。它包括:

  • 鉤子API

  • 工具API

  • 工具箱API

  • 調度API

  • 配置命名空間API

最后,還有核心層,它使用核心API構建在更高層可用的默認組件。您可以將默認組件視為CherryPy的“引用實現”。MegaFrameworks(和高級用戶)可以用自定義或擴展組件替換默認組件。核心API是:

  • 應用程序接口

  • 發動機API

  • 請求API

  • 服務器應用程序接口

  • WSGi應用程序接口

這些API在 CherryPy specification .

class cherrypy.Application(root, script_name='', config=None)[源代碼]?

基類:object

奇瑞派的應用程序。

服務器和網關不應直接實例化請求對象。相反,他們應該向應用程序對象請求請求對象。

此類的一個實例也可以用作自身的wsgi可調用(wsgi應用程序對象)。

config = {}?

pathconf pairs,其中“pathconf”本身是key:value pairs的dict。

類型

口述路徑

find_config(path, key, default=None)[源代碼]?

返回沿路徑鍵的最特定值,或默認值。

get_serving(local, remote, scheme, sproto)[源代碼]?

創建并返回請求和響應對象。

log = None?

日志管理器實例。請參閱_cplogging。

merge(config)[源代碼]?

將給定的配置合并到self.config中。

namespaces = {}?
relative_urls = False?
release_serving()[源代碼]?

釋放當前服務(請求和響應)。

request_class?

:py:class:`cherrypy._cprequest.Request`的別名

response_class?

:py:class:`cherrypy._cprequest.Response`的別名

root = None?

此應用程序頁面處理程序的最頂層容器。處理程序應按屬性層次結構排列,與預期的URI層次結構相匹配;然后,默認調度程序在此層次結構中搜索匹配的處理程序。使用除默認值以外的調度程序時,此值可能為“無”。

property script_name?

此應用程序的URI“安裝點”。

安裝點是URI的一部分,對于由該應用程序提供服務的所有URI來說,它都是常量;它不包括URI的方案、主機或代理(“虛擬主機”)部分。

例如,如果script_name是“/my/cool/app”,那么URL“http://www.example.com/my/cool/app/page1”可能由根對象上的“page1”方法處理。

腳本名稱的值不能以斜線結尾。如果腳本名稱引用了URI的根,它必須是空字符串(不是“/”)。

如果script_name顯式設置為none,則將為來自request.wsgi_environ的每個調用提供script_name ['SCRIPT_NAME'] .

script_name_doc = 'The URI "mount point" for this app. A mount point\n    is that portion of the URI which is constant for all URIs that are\n    serviced by this application; it does not include scheme, host, or proxy\n    ("virtual host") portions of the URI.\n\n    For example, if script_name is "/my/cool/app", then the URL\n    "http://www.example.com/my/cool/app/page1" might be handled by a\n    "page1" method on the root object.\n\n    The value of script_name MUST NOT end in a slash. If the script_name\n    refers to the root of the URI, it MUST be an empty string (not "/").\n\n    If script_name is explicitly set to None, then the script_name will be\n    provided for each call from request.wsgi_environ[\'SCRIPT_NAME\'].\n    '?
toolboxes = {'tools': <cherrypy._cptools.Toolbox object>}?
wsgiapp = None?

cpwsgiapp實例。參見_cpwsgi。

exception cherrypy.CherryPyException[源代碼]?

基類:Exception

Cherrypy異常的基類。

exception cherrypy.HTTPError(status=500, message=None)[源代碼]?

基類:cherrypy._cperror.CherryPyException

用于向客戶端返回HTTP錯誤代碼(4xx-5xx)的異常。

此異??捎糜谑褂肏TTP狀態代碼自動發送響應,并帶有適當的錯誤頁。它需要一個可選的 status 參數(必須介于400和599之間);默認為500(“內部服務器錯誤”)。它還需要一個可選的 message 參數,將在響應正文中返回。參見 RFC2616 獲取可用錯誤代碼的完整列表以及何時使用它們。

實例:

raise cherrypy.HTTPError(403)
raise cherrypy.HTTPError(
    "403 Forbidden", "You are not allowed to access this resource.")
code = None?

整數HTTP狀態代碼。

get_error_page(*args, **kwargs)[源代碼]?
classmethod handle(exception, status=500, message='')[源代碼]?

將異常轉換為httperror。

reason = None?

HTTP原因短語字符串。

set_response()[源代碼]?

修改cherrypy.response status、headers和body以表示自己。

CherryPy在內部使用它,但是您也可以使用它來創建一個httpError對象,并在沒有 飼養 例外。

status = None?

HTTP狀態代碼??梢允莍nt或str類型(帶有原因短語)。

exception cherrypy.HTTPRedirect(urls, status=None, encoding=None)[源代碼]?

基類:cherrypy._cperror.CherryPyException

應重定向請求時引發異常。

此異常將強制HTTP重定向到您提供的URL或URL。必須將新的URL作為第一個參數傳遞給異常,例如,httpredirect(new url)。列表中允許多個URL。如果URL是絕對的,它將按原樣使用。如果它是相對的,則假定它是相對于當前cherrypy.request.path_信息的。

如果提供的URL之一是Unicode對象,則將使用默認編碼或傳入參數對其進行編碼。

有多種類型的重定向,您可以通過 status 參數。如果您不提供 status arg,默認為303(如果使用HTTP/1.0響應,則為302)。

實例:

raise cherrypy.HTTPRedirect("")
raise cherrypy.HTTPRedirect("/abs/path", 307)
raise cherrypy.HTTPRedirect(["path1", "path2?a=1&b=2"], 301)

重定向帖子 其他注意事項。

default_status = 303?
encoding = 'utf-8'?

傳遞URL時的編碼不是本機字符串

set_response()[源代碼]?

修改cherrypy.response status、headers和body以表示自己。

CherryPy在內部使用它,但是您也可以使用它來創建一個httpRedirect對象,并在沒有 飼養 例外。

property status?

要發出的整數HTTP狀態代碼。

urls = None?

要發出的URL列表。

exception cherrypy.InternalRedirect(path, query_string='')[源代碼]?

基類:cherrypy._cperror.CherryPyException

為切換到其他URL的處理程序而引發異常。

此異常將把處理重定向到站點內的另一個路徑(而不通知客戶端)。在引發異常時提供新路徑作為參數。在查詢字符串中為新的URL提供任何參數。

exception cherrypy.NotFound(path=None)[源代碼]?

基類:cherrypy._cperror.HTTPError

當URL無法映射到任何處理程序(404)時引發異常。

這相當于提高 HTTPError("404 Not Found") .

class cherrypy.Tool(point, callable, name=None, priority=50)[源代碼]?

基類:object

用于Cherrypy請求處理掛鉤的注冊函數。

幫助(tool.callable)應該提供有關此工具的更多信息。

_merged_args(d=None)[源代碼]?

返回此工具的配置條目字典。

_setargs()[源代碼]?

將函數參數名稱復制到obj屬性。

_setup()[源代碼]?

將此工具掛接到cherrypy.request中。

當工具在config中“打開”時,標準CherryPy請求對象將自動調用此方法。

namespace = 'tools'?
property on?
cherrypy.expose(func=None, alias=None)[源代碼]?

公開函數或類。

(可選)提供一個別名或一組別名。

cherrypy.popargs(*args, **kwargs)[源代碼]?

裝飾派工。

(cherrypy.dispatch.dispatcher.dispatch方法名稱)

可選關鍵字參數:handler=(對象或函數)

提供一個_cp_調度函數,該函數將路徑段彈出到指定名稱下的cherrypy.request.params中。然后將調度轉發到下一個vpath元素。

請注意,應用popargs的類的任何現有(和公開)成員函數都將重寫該參數的值。例如,如果在用popargs修飾的類上有一個名為“list”的方法,那么訪問“/list”將調用該函數,而不是將其作為請求的參數彈出。此限制適用于所有的調度功能。繞過這個限制的唯一方法是創建一個“空白類”,它的唯一功能是提供cp_調度。

如果參數后面有path元素,或者請求的參數多于vpath中可用的參數,那么'handler'關鍵字參數指定下一個對象來處理參數化的請求。如果未指定處理程序或處理程序為“無”,則使用self。如果處理程序是函數而不是實例,那么將使用指定的參數調用該函數,并且該函數的返回值將用作下一個對象,而不是將參數添加到cherrypy.request.args。

此裝飾器可通過以下兩種方式之一使用:

作為班級裝飾師:

@cherrypy.popargs('year', 'month', 'day')
class Blog:
    def index(self, year=None, month=None, day=None):
        #Process the parameters here; any url like
        #/, /2009, /2009/12, or /2009/12/31
        #will fill in the appropriate parameters.

    def create(self):
        #This link will still be available at /create.
        #Defined functions take precedence over arguments.

或者作為一個班級的成員:

class Blog:
    _cp_dispatch = cherrypy.popargs('year', 'month', 'day')
    #...

處理程序參數可用于將參數與內置函數混合。例如,以下設置允許在日、月和年級別執行不同的活動:

class DayHandler:
    def index(self, year, month, day):
        #Do something with this day; probably list entries

    def delete(self, year, month, day):
        #Delete all entries for this day

@cherrypy.popargs('day', handler=DayHandler())
class MonthHandler:
    def index(self, year, month):
        #Do something with this month; probably list entries

    def delete(self, year, month):
        #Delete all entries for this month

@cherrypy.popargs('month', handler=MonthHandler())
class YearHandler:
    def index(self, year):
        #Do something with this year

    #...

@cherrypy.popargs('year', handler=YearHandler())
class Root:
    def index(self):
        #...
cherrypy.quickstart(root=None, script_name='', config=None)[源代碼]?

安裝給定的根目錄,啟動內置服務器(和引擎),然后阻塞。

根:“控制器類”(頁處理程序的集合)的實例

方法)表示應用程序的根。

腳本名稱:包含應用程序的“裝入點”的字符串。

這應該以斜線開頭,并且是URL中裝入給定根的路徑部分。例如,如果root.index()將處理對“http://www.example.com:8080/dept/app1/”的請求,則腳本“name”參數將為“/dept/app1”。

它不能以斜線結尾。如果腳本名稱引用了URI的根,它必須是空字符串(不是“/”)。

config:包含應用程序配置的文件或dict。如果這個包含

一 [全球的] 部分,這些條目將在全局(站點范圍)配置中使用。

cherrypy.url(path='', qs='', script_name=None, base=None, relative=None)[源代碼]?

為給定路徑創建絕對URL。

如果“path”以斜線(“/”)開頭,則返回

(基礎+腳本名稱+路徑+qs)。

如果不是以斜線開頭,則返回

(基礎+腳本名稱 [+ request.path_info] +路徑+qs)。

如果script_name為none,則將使用cherrypy.request查找腳本_name(如果可用)。

如果base為none,將使用cherrypy.request.base(如果可用)。請注意,您可以使用cherrypy.tools.proxy來更改這一點。

最后,請注意,此函數可以通過不傳遞參數來獲取當前請求路徑(減去querystring)的絕對URL。如果調用url(qs=cherrypy.request.query_string),則應獲取原始瀏覽器url(假定沒有內部重定向)。

如果沒有或沒有提供relative,則將使用request.app.relative_URL(如果可用,則為false)。如果為false,則輸出將是絕對URL(包括方案、主機、vhost和腳本名稱)。如果為真,則輸出將是相對于當前請求路徑的URL,可能包括“..”原子。如果relative是字符串“server”,則輸出將是相對于服務器根目錄的URL;即,它將以斜線開頭。