Sharan
Sharan

Reputation: 13

Passing python class object to bottle template

My class looks like this:

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)

First way is fine when we don't have many attributes to deal, but my class currently has around 10 attributes and it doesn't look good to pass so many parameters to template function. Now I want to pass an object of this class to bottle template and use it there. How can I do it?

Upvotes: 1

Views: 318

Answers (2)

Constantin Guidon
Constantin Guidon

Reputation: 1892

If you have 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))

But maybe its more interesting to inject your object directly in your template.

Upvotes: 0

ron rothman
ron rothman

Reputation: 18168

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

Just do that. It should work fine. In your template, you'll simply reference member.name, member.id_, etc.

Upvotes: 1

Related Questions