当前位置: 首页 > 面试题库 >

django模板系统,在模型内部调用函数

裘嘉木
2023-03-14
问题内容

我想从我的模型中的模板调用一个函数,例如:

class ChannelStatus(models.Model):
 ..............................
 ..............................

    def get_related_deltas(self,epk):
        mystring = ""
        if not self.get_error_code_delta(epk):
            return mystring
        else:
            for i in self.get_listof_outage():
                item = i.error_code.all()
                for x in item:
                    if epk == x.id:
                        mystring= mystring +" "+str(i.delta())
        return mystring 

当我想从模板中调用它时:假设在渲染时,我将channel_status_list传递为

channel_status_list = ChannelStatus.objects.all()

{% for i in channel_status_list %}
  {{ i.get_related_deltas(3) }}
{% endfor %}

这是行不通的,我能够调用一个不消耗任何东西的函数,但是如果找到有参数的函数就无法找到该怎么做


问题答案:

你无法使用模板中的参数调用函数。你只能在视图中执行此操作。另外,你可以编写一个自定义模板过滤器,看起来可能像这样:

@register.filter
def related_deltas(obj, epk):
    return obj.get_related_deltas(epk)

现在,你可以在模板中执行以下操作:

{% for i in channel_status_list %}
  {{ i|related_deltas:3 }}
{% endfor %}


 类似资料:
  • 主要内容:渲染函数,Django模板语言(DTL),过滤器,标签Django能够单独分开 Python 和 HTML,Python代码/变量进入视图和HTML模板。 连接这两个,Django依赖于渲染函数和Django模板语言。 渲染函数 这个函数有三个参数 − 请求− 初始化请求 模板路径 − 这是相对于在项目 settings.py 文件的变量到 TEMPLATE_DIRS 选项的路径。 参数字典 − 字典包含所需的模板中的所有变量。这个变量可以创建或者可

  • 在前一章中,你可能已经注意到我们在例子视图中返回文本的方式有点特别。也就是说,HTML被硬性地直接写入 Python 代码之中。 这种处理会导致一些问题: 对页面设计进行的任何改变都必须对 Python 代码进行相应的修改。站点设计的修改往往比底层 Python 代码的修改要频繁得多,因此如果可以在不进行 Python 代码修改的情况下变更设计,那将会方便得多。 Python 代码编写和 HTML

  • 问题内容: 我有一个关于如何从模板HTML按钮调用视图函数的问题?像onclick函数一样?这是模板: 而views.py是: 非常感谢你。 问题答案: 一种选择是,你可以使用 像这样: (删除和) 如果你想加载页面的特定部分,而无需重新加载页面-你可以 和一个听众

  • Django可以分离python和HTML,python进入视图,HTML进入模板。 为了链接这两者,Django依赖于渲染功能和Django模板语言。 渲染功能 这个功能有三个参数 - Request - 初始请求。 The path to the template的路径 - 这是相对于项目settings.py变量中的TEMPLATE_DIRS选项的路径。 Dictionary of para

  • Introduction web.py 的模板语言叫做 Templetor,它能负责将 python 的强大功能传递给模板系统。在模板中没有重新设计语法,它是类 python 的。 如果你会 python,你可以顺手拈来。 这是一个模板示例: $def with (name) Hello $name! 第一行表示模板定义了一个变量 name。 第二行中的 $name 将会用 name 的值来

  • 问题内容: 我正在向Django的模板传递一个函数,该函数返回一些记录。我想调用此函数并遍历其结果。 那不行 我试图将函数的返回值设置为变量并遍历该变量,但是似乎没有办法在Django模板中设置变量。 有什么正常的方法吗? 问题答案: 你不能调用在模板中需要参数的函数。写一个模板标签或过滤器。