首页 > 解决方案 > 是否可以将请求路径中的动态值分配给 FormHandler gramex-config 条目的“表”属性?

问题描述

下面对FormHandler-param-doc的参考 是示例 gramex-config 片段: dburl: postgresql://$db_name:$db_name@localhost:5432/$db_name

  data_filter:
    pattern: /$YAMLURL/data_filter/(\w+)
    handler: FormHandler
    kwargs:
      url: $dburl
      table: {_0}
      modify: data_filter.by_month_date(data)

table是否可以为请求 URL 路径的一部分的属性动态分配值?对于示例请求,例如: /data_filter/prod_rec_20?S_CODE=20&D_CODE=322&Market_Code=10753&Crop_Code=106 收到以下错误:

Traceback (most recent call last):
  File "c:\programdata\anaconda3\lib\site-packages\gramex\handlers\formhandler.py", line 157, in get
    result[key] = yield val
  File "c:\programdata\anaconda3\lib\site-packages\tornado\gen.py", line 1133, in run
    value = future.result()
  File "c:\programdata\anaconda3\lib\concurrent\futures\_base.py", line 425, in result
    return self.__get_result()
  File "c:\programdata\anaconda3\lib\concurrent\futures\_base.py", line 384, in __get_result
    raise self._exception
  File "c:\programdata\anaconda3\lib\concurrent\futures\thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "c:\programdata\anaconda3\lib\site-packages\gramex\data.py", line 247, in filter
    raise ValueError('No table: or query: specified')
ValueError: No table: or query: specified

标签: gramex

解决方案


当然。请参阅https://learn.gramener.com/guide/formhandler/#formhandler-parameters

您可以指定table: '{_0}'. 然后/data_filter/?table=prod_rec_20会工作。

table: {_0}但是,没有引号是行不通的。YAML 将 解释{}为一个对象。你需要引用'{_0}'这个才能工作。(我测试了它,它工作正常。


推荐阅读