假设我有一个观点:
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
在路由器中挂钩以使用自定义谓词,补间等转换传入的视图参数。
答案 0 :(得分:1)
使用functools.singledispatch
? https://docs.python.org/3/library/functools.html#functools.singledispatch
答案 1 :(得分:1)
您要问的是2个工作流程。 1)转换传入的数据。 2)在网址中翻译传出的数据。
在Pyramid中,传入数据的转换应该由装饰器,视图映射器或可能的谓词完成。您必须决定哪种情况最适合您的用例。 Tweens真的没有意义,因为它们发生在创建together = pd.concat([df_new, df_old])
之前。
就网址生成而言,df_new['TMAX'].fillna(df_old['TMAX'])
唯一可用的钩子是路线上的matchdict
,它可以接受kwargs并翻译它们。