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

时间:2017-03-11 19:23:19

标签: django django-templates django-sekizai

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

处理模板时,调用__str__() MyObject方法来创建要填充的字符串。对于MyObject,它看起来像这样:

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

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

1 个答案:

答案 0 :(得分:2)

我担心这是不可能的,而且不是Django方式

我要做的是:

  1. 声明一个模板(名为mymodel_repr.html)。
  2. 写在里面,确切地说我想要渲染。
  3. 将其存储在其他模板中(也可以在应用程序的templates/文件夹中)。
  4. 更改__str__(self)以返回required字段或其他内容。
  5. 现在,每次我想要打印此模型的对象(以模板方式显示所有上下文)时,我只需include it这样:{% include 'mymodel_repr.html' with obj=obj_i_want_to_print %}
  6. 使用此方法,您可以从演示文稿中分离业务。

    希望这能帮到你!