在cherrypy/mako中处理动态参数的URL
我有一个简单的网页应用,是用Python写的,使用了cherrypy和Mako模板。最麻烦的事情就是打印带参数的链接,尤其是当我需要逐步添加更多参数、更新已有参数或者删除参数的时候。
在这个应用中,有一个常见的模式是逐步限制表格中列出的项目,比如说从数据库中存储的一些图片。用户的操作流程是这样的:
- 一开始显示所有的图片,也就是网址是/images
- 限制到某个类别的图片,所以网址变成/images?category=2398
- 限制到2013年1月7日上传的图片,网址变成/images?category=2398&date=20130107
- 去掉类别的限制,网址变成/images?date=20130107
- 按大小排序,网址变成/images?date=20130107&sort=size&order=asc
- 反向排序,网址变成/images?date=20130107&sort=size&order=desc
大部分操作都是通过点击表格的标题或者单元格中的值(比如类别名称)来完成的,而处理这些操作需要写很多代码,这些代码大部分都是差不多的,写起来很繁琐,也不容易修改。
有没有什么好的方法可以自动处理这些操作?比如说cherrypy或者Mako有没有什么工具或插件可以让这个过程更简单?
1 个回答
1
你可以把你的网址变量放在一个配置文件里,这样就能把它们集中管理,方便使用...
#server.conf
[urlvariables]
variables: ['date', 'sort', 'order']
然后当你要渲染你的Mako模板时,可以这样构建网址...
urlstring = ''
for CurrentVar in cherrypy.request.app.config['urlvariables']['variables']:
urlstring += CurrentVar + '=' + 'yourvalue&'
mytemplate = Template("<a href='{url}'>click here</a>")
return mytemplate.render(url='/images?' + urlstring)
希望这对你有帮助!
安德鲁