将 python class 对象传递给瓶子模板

Passing python class object to bottle template

我的 class 看起来像这样:

class Person:
   def __init__(name=None, id_=None):
      self.name = name
      self.id_ = id_

# I'm currently doing this. member object is of Person type.
return template('index.html', name=member.name, id_=member.id_)

# What I want to do
return template('index.html', member=member)

当我们没有很多属性要处理时,第一种方法很好,但是我的 class 目前有大约 10 个属性,将这么多参数传递给模板函数看起来不太好。现在我想将这个 class 的对象传递给 bottle 模板并在那里使用它。我该怎么做?

# What I want to do
return template('index.html', member=member)

就这样吧。它应该工作正常。在您的模板中,您只需引用 member.namemember.id_

如果你有 python 3.7+

from dataclasses import dataclass, asdict

@dataclass
class Person:
    name: str
    id_: str

member = Person('toto', '1')
return template('index.html', **asdict(member))

但也许将对象直接注入到模板中更有趣。