如何使用上下文将 python 对象转换为字符串?

How can I convert a python object to string using the context?

我正在尝试以表单的方式在 Django 模板中呈现对象实例。因此在视图中的某处创建了一个对象实例:my_object = MyObject() 并在上下文中传递给模板:context['my_object'] = my_object.

模板处理时,调用了MyObject__str__()方法,创建了一个待填充的字符串,对于MyObject来说是这样的:

def __str__(self):
    """ Render template """
    return mark_safe(
        render_to_string(self.template, {'options': self.options})
    )

由于对象的模板想使用 sekizai 将代码添加到 CSS 和 JS 块,所以我需要渲染上下文。有没有办法(例如,使用不同的方法)来获取此上下文?

恐怕这是不可能的,而且这不是 Django 的方式

我会做的是:

  1. 声明一个模板(命名为 mymodel_repr.html)。
  2. 在里面写上我想要的渲染方式。
  3. 将它存储在其他模板中(也可能在应用程序的 templates/ 文件夹中)。
  4. __str__(self) 更改为 return 一个 required 字段或其他字段。
  5. 现在,每次我想打印这个模型的对象(以模板方式包含所有上下文)时,我会简单地 include it 像这样:{% include 'mymodel_repr.html' with obj=obj_i_want_to_print %}.

通过这种方法,您可以将业务与演示分开。

希望对您有所帮助!