1

是否可以从 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)

在给定特定条件的情况下,我想在保存时调用此类方法,但我认为这与此处无关...

4

1 回答 1

3

Template(templates/event_template.html)永远不会工作,因为这根本不是有效的Python - 它试图将(不存在的)值“模板”除以(也不存在的)对象“event_template”的“html”属性。如果你不清楚,你应该做一个介绍性的 Python 教程。

Template('templates/event_template.html')是有效的 Python,但会在错误的位置查找模板文件:模板加载器已经在“模板”下查找,因此将在“模板/模板/”中查找“事件模板.html”文件。删除目录引用。

完成后,您将遇到另一个Context需要字典的问题,并且您正在通过self. 除非你已经覆盖__getitem__了你的模型类,否则这是行不通的。您可能应该只传递一个包含一个条目的字典,例如{'item': self},并且在您的模板中您可以引用 的各种属性item

于 2013-04-08T06:46:32.207 回答