I am trying to get the URL mapping to work, but so far have not been able to. I'm attaching the config.conf, global.conf and server.py files, please help.
I have read the CherryPy documentation on dispatch, but I just can't catch where I might be doing the wrong thing. I'm a newbie at CherryPy.
I get the following error:
404 Not Found
The path '/titles.html' was not found.
In addition, the custom error page failed:
ValueError: unsupported format character '"' (0x22) at index 1916
Traceback (most recent call last):
File "/home/dev/fbenavides/lib/python2.7/site-packages/cherrypy/_cprequest.py", line 656, in respond
response.body = self.handler()
File "/home/dev/fbenavides/lib/python2.7/site-packages/cherrypy/lib/encoding.py", line 188, in __call__
self.body = self.oldhandler(*args, **kwargs)
File "/home/dev/fbenavides/lib/python2.7/site-packages/cherrypy/_cperror.py", line 386, in __call__
raise self
NotFound: (404, "The path '/titles.html' was not found.")
Powered by CherryPy 3.2.4
global.conf
[global]
tools.encode.on: True
tools.encode.encoding: 'utf-8'
tools.decode.on: True
tools.trailing_slash.on: True
tools.staticdir.root: server.HTTP_ROOT
log.screen: True
log.error_file: server.HTTP_ROOT + '/log/errors'
log.access_file: server.HTTP_ROOT + '/log/access'
server.socket_host: '0.0.0.0'
server.socket_port: 8080
error_page.404: server.HTTP_ROOT + '/templates/404.html'
error_page.500: server.HTTP_ROOT + '/templates/500.html'
config.conf
[/]
tools.staticdir.on: True
tools.staticdir.debug: True
tools.staticdir.dir: ''
[/img]
tools.staticdir.on: True
tools.staticdir.debug: True
tools.staticdir.dir: 'img'
[/css]
tools.staticdir.on: True
tools.staticdir.debug: True
tools.staticdir.dir: 'css'
[js]
tools.staticdir.on: True
tools.staticdir.debug: True
tools.staticdir.dir: 'js'
[templates]
tools.staticdir.on: True
tools.staticdir.debug: True
tools.staticdir.dir: 'templates'
server.py
# encode: utf-8
import os
import cherrypy
from datetime import date
from jinja2 import Environment, FileSystemLoader
HTTP_ROOT = os.path.abspath(os.path.dirname(__file__))
env = Environment(loader=FileSystemLoader(os.path.join(HTTP_ROOT,'templates')))
conf = os.path.join(HTTP_ROOT,'config.conf')
glob = os.path.join(HTTP_ROOT,'global.conf')
class Root(object):
@cherrypy.expose
def index(self):
tmpl = env.get_template('index.html')
return tmpl.render(title='CherryPy - Pythonic WSGI OO HTTP WEB Framework')
@cherrypy.expose
def titles(self):
today = date.today()
tmpl = env.get_template('titles.html')
return tmpl.render(launch1=(date(2014,2,18)-today).days)
root = Root()
root.titles = titles
if __name__ == '__main__':
cherrypy.config.update(glob)
cherrypy.tree.mount(root, "/", config=conf)
cherrypy.engine.start()
cherrypy.engine.block()
Your handle for titles would be just that.
No need for the .html. That's only relevant to the phyical path to your templating system. However if you really do what to reference:
then change your handle to this...
http://docs.cherrypy.org/dev/concepts/dispatching.html#special-characters
Hope this helps!