如何使用上下文将 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 的方式!
我会做的是:
- 声明一个模板(命名为
mymodel_repr.html
)。
- 在里面写上我想要的渲染方式。
- 将它存储在其他模板中(也可能在应用程序的
templates/
文件夹中)。
- 将
__str__(self)
更改为 return 一个 required
字段或其他字段。
- 现在,每次我想打印这个模型的对象(以模板方式包含所有上下文)时,我会简单地
include it
像这样:{% include 'mymodel_repr.html' with obj=obj_i_want_to_print %}
.
通过这种方法,您可以将业务与演示分开。
希望对您有所帮助!
我正在尝试以表单的方式在 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 的方式!
我会做的是:
- 声明一个模板(命名为
mymodel_repr.html
)。 - 在里面写上我想要的渲染方式。
- 将它存储在其他模板中(也可能在应用程序的
templates/
文件夹中)。 - 将
__str__(self)
更改为 return 一个required
字段或其他字段。 - 现在,每次我想打印这个模型的对象(以模板方式包含所有上下文)时,我会简单地
include it
像这样:{% include 'mymodel_repr.html' with obj=obj_i_want_to_print %}
.
通过这种方法,您可以将业务与演示分开。
希望对您有所帮助!