是否可以从Django中的类方法引用模板?假设我的模型中有以下类(对于离线扬声器系列):
class Event(models.Model):
name = models.CharField(max_length=300)
date = models.DateTimeField()
desc = models.TextField(blank=True, null=True)
location = models.ForeignKey('Location', blank=True, null=True)
speaker = models.ForeignKey('Speaker', blank=True, null=True)
我想使用这些属性来填充模板,并在API帖子中使用生成的HTML字符串。如何从类方法中引用HTML模板:
def create_event_html(self):
# This is not working with or without Quotes
t = Template(templates/event_template.html)
c = Context(self)
return t.render(c)
我想在一定条件下调用此类方法,但我不认为这与...相关...
答案 0 :(得分:3)
Template(templates/event_template.html)
永远不会起作用,因为它根本不是有效的Python - 它试图将(不存在的)值'templates'除以(也不存在的)对象的'html'属性'event_template'。如果你不清楚,你应该做一个介绍性的Python教程。
Template('templates/event_template.html')
是有效的Python,但会查找模板文件的错误位置:模板加载器已经在“模板”下查看,因此将在'templates / templates /'中查找' event_template.html'文件。删除目录引用。
一旦完成,你会遇到另一个问题Context
需要一个字典,而你正在传递self
。除非您在模型类上覆盖了__getitem__
,否则这将无效。您应该只传递一个带有一个条目的字典,例如{'item': self}
,并且在您的模板中,您可以引用item
的各种属性。