在cherrypy/mako中处理动态参数的URL

3 投票
1 回答
890 浏览
提问于 2025-04-17 15:50

我有一个简单的网页应用,是用Python写的,使用了cherrypy和Mako模板。最麻烦的事情就是打印带参数的链接,尤其是当我需要逐步添加更多参数、更新已有参数或者删除参数的时候。

在这个应用中,有一个常见的模式是逐步限制表格中列出的项目,比如说从数据库中存储的一些图片。用户的操作流程是这样的:

  1. 一开始显示所有的图片,也就是网址是/images
  2. 限制到某个类别的图片,所以网址变成/images?category=2398
  3. 限制到2013年1月7日上传的图片,网址变成/images?category=2398&date=20130107
  4. 去掉类别的限制,网址变成/images?date=20130107
  5. 按大小排序,网址变成/images?date=20130107&sort=size&order=asc
  6. 反向排序,网址变成/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)

希望这对你有帮助!

安德鲁

撰写回答