例如,如果用戶要到本地主機: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. 根據我的頁面獲取不同的url請求
- 5. 顯示請求的PHP頁面?
- 6. codeigniter不顯示請求的頁面
- 7. 顯示舊請求的ASP頁面
- 8. JavaScript - 如何在url中顯示AJAX數據請求?
- 9. 如何讓Facebook好友請求框在canvas頁面中顯示?
- 10. 如何在CherryPy中處理Web請求?
- 11. 如何根據頁面中的類別顯示WordPress的帖子
- 12. 如何根據用戶的請求顯示說明?
- 13. 根據任務索引頁面中的任務狀態顯示選定的行。
- 14. 如何讓cURL不顯示請求頁面的主體?
- 15. 如何根據scrapy中的url過濾重複請求
- 16. 如何根據自定義WordPress頁面上的URL slug顯示動態內容?
- 17. 如何顯示jsp頁面搜索請求後的記錄列表頁面
- 18. 如何讓一列表根據請求動態顯示jsp?
- 19. 如何根據命令請求創建和顯示視圖?
- 20. 在jQuery mobile上的數據請求前顯示頁面
- 21. 如何根據名稱在jsp頁面中顯示名稱
- 22. 如何根據複選框在PDF中隱藏/顯示頁面
- 23. 如何獲取請求庫中的當前頁面URL?
- 24. 如何從url中顯示html頁面中的網頁?
- 25. 根據任意
- 26. symfony:如何根據請求的URL來模擬對Guzzle Api請求的響應
- 27. Java:如何在顯示頁面時發送POST請求?
- 28. 根據頁面屬性顯示圖標
- 29. 如何根據需求顯示數據庫中的數據?
- 30. 如何在html頁面中使用數據url顯示圖像
我正在尋找實際接收URL併發送回HTML文檔,因爲在由cherrypy託管的網站上爲每個頁面定義一個新函數似乎毫無意義,我仍然需要看起來,用這個定義每個頁面的函數。 – MiseroMCS