如何使用Cherrypy自定义404错误页面加载子文件夹

时间:2018-07-27 21:57:26

标签: python http-status-code-404 cherrypy

我想将cherrypy中显示的404错误页面覆盖到我的自定义错误页面。挑战在于读取目录中包含我的index.html的所有子文件夹。这些子文件夹是img,css,js ...

根据cherrypy documentation,我发现我可以自定义一个覆盖该功能的404错误页面,并以以下形式执行cherrypy.config.update:

{ "users" : [1,2] }

我成功地自定义了页面,并且成功地将我的html加载进了HTML。

这是我的代码,用于加载html(但不加载该文件夹内的子目录)。

  _cp_config = {
       'error_page.404': os.path.join(localDir, "static/index.html")
   }

我正在使用CSS和JS声明CONF_WEBAPP并在该行中加载的静态网站提供完全功能:

  

cherrypy.tree.mount(ServeWebApp(),'/ webapp',config = CONF_WEBAPP)

在我的文件夹WEB_ROOT内,我有一个index.html文件和一个 一组文件夹{css,js,字体,img}。 我想加载该文件夹内的索引文件和所有子目录。可能吗?还有另一种方法可以得到相同的结果吗? 我无法使用其他工具来显示自定义页面(例如Nginx,apache)。

Another method to customize but I could not follow that way because it uses functions

1 个答案:

答案 0 :(得分:0)

这是我解决问题的方式。

首先,我在virtualenv中安装了lib requests

import requests
from ConfigParser import RawConfigParser
config = RawConfigParser()
#file with my urls I would like to use in my app.
config.read('myparams.ini')


class PlatformAndroid(object):
    android_url = config.get('links', 'android')#static url to play store
    redir = requests.get(android_url)
    if redir.status_code < 400: #case my app is published in play store
        raise cherrypy.HTTPRedirect(android_url)
    #unpublished app
    raise cherrypy.HTTPRedirect(config.get('links','webapp')) #fallback to webapp version of my platform specific app.

if __name__ == '__main__':

    cherrypy.tree.mount(PlatformAndroid(), '/android')

    cherrypy.engine.start()
    cherrypy.engine.block()

myparams.ini

[links]

android : http://play.google.com/store/apps/
ios : http://itunes.apple.com/us/app/
webapp : http://mysite.example.com/webapp/