代码和错误如下:
>>> from django.template import Template,Context
>>> class Person(object):
... def _init_(self,first_name,last_name):
... self.first_name,self.last_name = first_name,last_name
>>> t=Template('hello,{{person.first_name}}{{person.last_name}}')
>>> c=Context({'person':Person('John','Smith')})
Traceback (most recent call last):
File "<console>", line 1, in <module>
TypeError: object.__new__() takes no parameters
经过折腾发现,因为Context()中对类进行了初始化,而初始化出错了。测试如下:
>>> person=Person('John','Smith')
Traceback (most recent call last):
File "<console>", line 1, in <module>
TypeError: object.__new__() takes no parameters 故有修改如下:
from django.template import Template,Context
>>> class Person(object):
... def _init_(self,first_name,last_name):
... self.first_name,self.last_name = first_name,last_name
>>> t=Template('hello,{{person.first_name}}{{person.last_name}}')
>>> person=Person()
>>> person.first_name='John'
>>> person.last_name='Smith'
>>> c=Context({'person':person})
>>> t.render(c) 结果正确:u'hello,JohnSmith'