动态翻译金字塔的视图参数

时间:2016-02-04 13:35:30

标签: pyramid

假设我有一个观点:

my_view(request: Request, uuid: UUID):
     pass

我想自动将所有uuid对象转换为基于base64的字符串,这样框架用户无需手动调用slug_to_uuid()uuid_to_slug。这将适用于所有视图,并基于Python 3参数签名类型提示(如果它提示它是UUID对象,那么您希望将其转换为字符串并返回)。

  • route_url('viewname', uuid=my_uuid)会将UUID参数编码为base64 string

  • 路由机制会读取视图函数的Python 3签名,并在调用视图之前将字符串转换回UUID对象

我可以在金字塔中采取什么样的钩子和方法?

  • 挂钩到route_url

  • 在路由器中挂钩以使用自定义谓词,补间等转换传入的视图参数。

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

您要问的是2个工作流程。 1)转换传入的数据。 2)在网址中翻译传出的数据。

在Pyramid中,传入数据的转换应该由装饰器,视图映射器或可能的谓词完成。您必须决定哪种情况最适合您的用例。 Tweens真的没有意义,因为它们发生在创建together = pd.concat([df_new, df_old]) 之前。

就网址生成而言,df_new['TMAX'].fillna(df_old['TMAX']) 唯一可用的钩子是路线上的matchdict,它可以接受kwargs并翻译它们。