2013-04-06 44 views
0

这是我编程的Cherrypy中的服务器,我想添加查询字符串。我在Url上添加查询字符串,但Url没有交换

但是,当我使用重定向的网站,它似乎不起作用的localhost:8080/index?foo=1&foo=2 为什么?

我的项目

import cherrypy 
import urllib 
#import requests 

class Root(object): 
    @cherrypy.expose 
    def index(self): 
     jsondict = [('foo', '1'), ('foo', '2')] 
     p = urllib.urlencode(jsondict) 
     #url = urllib.urlopen("http://localhost:8080?%s" % params) 
     #urlVar = 1 
     #urlVar2 = 2 
     #requests.get("localhost:8080/?", params =p) 

     raise cherrypy.HTTPRedirect("localhost:8080/index?" + p) 

cherrypy.config.update({ 

     'server.socketPort': 8080 

}) 
cherrypy.quickstart(Root()) 

但我想添加URL上的变量,而该网站的启动

回答

1

根据文档,你不能指定的主机,你也需要有一个处理您的查询视图参数,所以做这样的事情:

class Root(object): 
    @cherrypy.expose 
    def index(self, foo=None): 
     if not foo: 
      jsondict = [('foo', '1'), ('foo', '2')] 
      p = urllib.urlencode(jsondict) 
      #url = urllib.urlopen("http://localhost:8080?%s" % params) 
      #urlVar = 1 
      #urlVar2 = 2 
      #requests.get("localhost:8080/?", params =p) 

      raise cherrypy.HTTPRedirect("/index?" + p) 

     return foo 
+1

GooD !!!! 404未找到 意外查询字符串参数:FOO,FO 回溯(最近通话最后一个): 文件 “/usr/lib/python2.7/dist-packages/cherrypy/_cprequest.py”,线路656, in response response.body = self.handler() 文件“/usr/lib/python2.7/dist-packages/cherrypy/lib/encoding.py”,第188行,在__call__中 self.body = self.oldhandler (* args,** kwargs) 文件“/usr/lib/python2.7/dist-packages/cherrypy/_cpdispatch.py​​”,第40行,在__call__中 raise sys.exc_info()[1] HTTPError :(404,'意外查询字符串参数:foo,fo') 为什么现在这个错误? – 2013-04-06 22:19:25

+1

因为您的索引处理程序/视图不接受任何参数。阅读文档以了解如何使用参数定义视图。 – gatto 2013-04-06 22:22:50

+0

,但我可以提供一些建议吗? – 2013-04-06 22:24:37