是否可以将请求路径中的动态值分配给 FormHandler gramex-config 条目的“table”属性?

is it possible to assign dynamic value from request-path to `table` attribute for FormHandler gramex-config entry?

参考 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)

是否可以从请求-URL 路径的一部分为 table 属性动态分配值? 对于示例请求,例如: /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

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

您可以指定table: '{_0}'。然后 /data_filter/?table=prod_rec_20 就可以了。

但是,没有引号的

table: {_0} 将不起作用。 YAML 将 {} 解释为一个对象。您需要引用 '{_0}' 才能正常工作。 (我测试了一下,没问题。