例如,如果用戶要到本地主機:8080/foobar228,我不需要定義一個函數在請求進行硬編碼爲foobar228頁。我想只是有一個功能,讓您所請求的網址(「foobar228」),並像GET和POST請求等信息,並返回HTML送達。任何方式來做到這一點?如何根據CherryPy中請求的URL顯示任意頁面?
0
A
回答
1
所使用的默認方法。這是一個例子。
import cherrypy
class Root:
@cherrypy.expose
def default(self, *url_parts, **params):
req = cherrypy.request
print(url_parts)
body = [
'Page served with method: %s' % req.method,
'Query string from req: %s' % req.query_string,
'Path info from req: %s' % req.path_info,
'Params (query string + body for POST): %s' % params,
'Body params (only for POST): %s' % req.body.params
]
if url_parts: # url_parts is path_info but divided by "/" as a tuple
if url_parts[0] == 'foobar228':
body.append('Special foobar page')
else:
body.append('Page for %s' % '/'.join(url_parts))
else:
body.append("No path, regular page")
return '<br>\n'.join(body)
cherrypy.quickstart(Root())
的網址段成爲位置參數和任何查詢字符串(?foo=bar
)是該方法的關鍵字參數,還爲POST
方法身體參數被包括在關鍵字參數部分(在這種情況下方法定義中名稱爲params
1
特殊_cp_dispatch方法
_cp_dispatch是你在任何控制器按摩剩餘的部分CherryPy的得到處理之前的聲明的特殊方法。這爲您提供刪除,添加或以其他方式處理您希望的任何細分市場的能力,甚至可以完全改變剩餘的部分。
import cherrypy
class Band(object):
def __init__(self):
self.albums = Album()
def _cp_dispatch(self, vpath):
if len(vpath) == 1:
cherrypy.request.params['name'] = vpath.pop()
return self
if len(vpath) == 3:
cherrypy.request.params['artist'] = vpath.pop(0) # /band name/
vpath.pop(0) # /albums/
cherrypy.request.params['title'] = vpath.pop(0) # /album title/
return self.albums
return vpath
@cherrypy.expose
def index(self, name):
return 'About %s...' % name
class Album(object):
@cherrypy.expose
def index(self, artist, title):
return 'About %s by %s...' % (title, artist)
if __name__ == '__main__':
cherrypy.quickstart(Band())
通知控制器如何定義_cp_dispatch,它只有一個參數,該URL路徑信息分解成它的片段。
的方法,可以檢查和操縱的段的列表中,去除任何或在任何位置添加新的段。然後將新的分段列表發送給調度員,調度員將使用它來查找適當的資源。
在上面的例子中,你應該可以去以下網址:
http://localhost:8080/nirvana/
http://localhost:8080/nirvana/albums/nevermind/
的/必殺技/段被關聯到帶和/沒關係/段涉及該專輯。
爲了實現這一目標,我們_cp_dispatch方法適用於默認調度匹配對頁面處理程序簽名和它們在處理程序樹中的位置的URL的想法。
從docs
相關問題
- 1. 根據原始請求的URL顯示不同的Tomcat錯誤頁面
- 2. 根據url顯示頁面AngularJs
- 3. 如何根據用戶請求在顯示標籤中應用頁面大小?
- 4. 顯示舊請求的ASP頁面
- 5. JavaScript - 如何在url中顯示AJAX數據請求?
- 6. 如何讓Facebook好友請求框在canvas頁面中顯示?
- 7. 如何根據頁面中的類別顯示WordPress的帖子
- 8. 如何在CherryPy中處理Web請求?
- 9. 如何根據用戶的請求顯示說明?
- 10. 如何讓cURL不顯示請求頁面的主體?
- 11. 如何根據自定義WordPress頁面上的URL slug顯示動態內容?
- 12. 如何讓一列表根據請求動態顯示jsp?
- 13. 如何根據命令請求創建和顯示視圖?
- 14. 如何根據名稱在jsp頁面中顯示名稱
- 15. 如何獲取請求庫中的當前頁面URL?
- 16. 根據頁面屬性顯示圖標
- 17. symfony:如何根據請求的URL來模擬對Guzzle Api請求的響應
- 18. 如何在html頁面中使用數據url顯示圖像
- 19. 根據頁面寬度顯示我的頁面上的元素
- 20. 您可以根據請求URL指定要包含的JSP頁面嗎?
- 21. 如何根據用戶顯示不同的視圖/ HTML頁面?
- 22. 如何根據stateParams顯示頁面的一部分?
- 23. 根據請求url自動選擇viewResolver?
- 24. 根據請求URL修改光油TTL
- 25. 如何使用python在域中請求職業頁面url
- 26. 根據請求
- 27. 如何根據請求綁定應用程序的基本URL?
- 28. 在處理Spring中的請求之前顯示等待頁面
- 29. 頁面錨點URL顯示
- 30. 自定義頁面在opencart中顯示「請求找到的頁面」
我正在尋找實際接收URL併發送回HTML文檔,因爲在由cherrypy託管的網站上爲每個頁面定義一個新函數似乎毫無意義,我仍然需要看起來,用這個定義每個頁面的函數。 – MiseroMCS