django 中template 怎么使用model自定义的方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django 中template 怎么使用model自定义的方法相关的知识,希望对你有一定的参考价值。

参考技术A

    如果参数只涉及model自身的属性值, 在模版中可以直接调用,注意,不能加括号entry.def_name;或者使用property(方法名)函数,将方法的结果变为属性;new_value = property(_def_name), 使用: entry.new_value

    如果参数涉及其他变量,建议使用自定义模版过滤器(自己搜);

    如果还不能满足,建议更换模版模块.

    以上基于python2.7 django1.11.18

参考技术B 如果DataList是一个集合:%fordatainSchemaDataList%data.attribute%endfor%

如何在脚本中使用 django-template 而不是 jinja2?

【中文标题】如何在脚本中使用 django-template 而不是 jinja2?【英文标题】:How to use django-template in a script instead of jinja2? 【发布时间】:2012-02-12 06:48:51 【问题描述】:

我正在为 Django 编写一个管理命令,并创建了模板文件,我解析这些文件以创建新文件。

到目前为止,我使用的是 Jinja2,但由于它是一个 Django 管理命令,我想切换到基于 django 的模板。

你知道如何在 django 管理命令文件中设置模板环境吗?

我正在寻找的是相当于这个 jinja2 代码:

env = Environment(loader=PackageLoader('modulo.bin', 'templates/plugin_templates'))

编辑:好的,在管理命令中它会起作用。但是如果我想在普通的 python 脚本中使用 django-template 怎么办?

谢谢,

雷米

【问题讨论】:

【参考方案1】:

您无需设置任何环境。你在一个 Django 命令中,你可以使用 Django 模板。

【讨论】:

好的,但在这种情况下,我的模板需要位于我的项目模板目录中。我想为与项目模板目录分开的命令创建一个特定的模板目录。但是在这里,我只需要在 INSTALLED_APP 中添加我的 bin 应用程序,它就可以工作了。谢谢。【参考方案2】:

Django 管理命令可以访问所有 django 环境变量,就像您通常在视图中一样。

要加载模板,为其分配一些上下文,然后保存结果:

from django.template.loader import render_to_string

c = 'var':'value','var2':'value2'  # values you want to send to the template
content = render_to_string('template.html',c) # rendered template

这遵循正常的 django 模板规则,所以 template.html 应该是可加载的(换句话说,它应该在 django 查找模板的“正常”位置;或者在 TEMPLATE_DIRS 中列出的目录中)。

【讨论】:

以上是关于django 中template 怎么使用model自定义的方法的主要内容,如果未能解决你的问题,请参考以下文章

Django进阶

Django进阶

django使用templates模板

Django中模板使用

在 Django 的 TEMPLATE_DIRS 中使用外部 URL

Django 中所有应用程序的基本模板