【问题标题】:CherryPy: What would the html command line syntax be if you wanted to pass a dictionary as an argument?CherryPy:如果您想将字典作为参数传递,那么 html 命令行语法是什么?
【发布时间】:2013-02-15 16:42:21
【问题描述】:

所以我构建了一个简单的名为“echo”的cherrypy 函数来尝试找出cherrypy 发送到我的python 函数的内容。示例:

http://djotjog.com/cp/echo/692-gg_org_id-2013-02-05.json/
RETURNS:
{'kw': {}, 'args': (), 'param_1': '692-gg_org_id-2013-02-05.json', 'param_2': None}

现在,这可能看起来很奇怪,但我想传递一本字典。这是一个 html 的噩梦吗?示例:

这个函数需要两个参数。参数是可选的:

def some_function(filename, params = {'db':'bh-localhost','h':'sparse','branching':7})

通过cherrypy发送...

http://djotjog.com/cp/echo/692-gg_org_id-2013-02-05.json/{h:'branchy','branching':7,'db':'bh-localhost'}
RETURNS    
{'kw': {}, 'args': (), 'param_1': '692-gg_org_id-2013-02-05.json', 'param_2': "{h:'branchy','branching':7,'db':'bh-localhost'}"}

但是当我通过实际函数而不是回声时,它告诉我:

404 未找到。没有任何内容与给定的 URI 匹配。

这是因为字典现在是字符串而不是字典吗?我可以做些什么来传递字典?还是只保留个别论点?

【问题讨论】:

  • 我想我在这里追求的灵活性是一种传递或省略一组可选参数中的任何一个的方法,而无需对这些参数出现在参数列表中的顺序感到挑剔。最好的技巧是什么?
  • 为什么你想要像http://djotjog.com/cp/echo/692-gg_org_id-2013-02-05.json/{h:'branchy','branching':7,'db':'bh-localhost'}这样的网址而不是像http://djotjog.com/cp/echo/692-gg_org_id-2013-02-05.json/?h=branchy&branching=7&db=bh-localhost这样的标准格式?
  • 一个json或者字典格式可以省略keys,可以任意顺序发送,所以不太容易出错。否则,将所有部分发送到函数也可以以这种格式工作,但我必须在每次调用时更加注意可选参数和必需参数。

标签: python cherrypy


【解决方案1】:

尝试设置 echo 接收可变数量的参数...

@cherrypy.expose
def echo(self, *args, **kwargs):
    return kwargs['param_1']

希望这会有所帮助。

安德鲁

【讨论】:

  • 这也适用于将字典中可变数量的参数传递给python函数吗?还是我必须先将这样的字符串转换回函数中的字典?
  • 我会将字典作为 json 对象传递。看看这个链接:stackoverflow.com/questions/14895084/…
  • 所以在我的上下文中, xmlhttp.open("POST","/tagTweets?UpdatedData=" + JSON.stringify(JSONObject), true);将改为 xmlhttp.open("POST","/cp/echo/params=" + JSON.stringify(JSONObject), true);如果 params 是我想传递给 python 函数的字典?
  • 你正朝着正确的方向前进。现在只需定义 JSSONObject。 var JSONObject = { 参数:[] }; JSONObject.changes.push({"param_1": "692-gg_org_id-2013-02-05.json", "param_2": "{h:'branchy','branching':7,'db':'bh-本地主机'}" });
猜你喜欢
  • 2016-10-10
  • 2011-08-01
  • 2020-01-14
  • 2013-08-03
  • 2020-03-09
  • 2017-07-26
  • 1970-01-01
  • 2015-07-19
  • 2023-02-10
相关资源
最近更新 更多