在Django HTML temp中包含一个简单函数

2024-05-17 12:14:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前有一个名为“copyright”(动态版权消息)的函数,我正试图将其包含到我的基本Django模板中,如下所示:

def copyright():
   some code
   some more code
   print(finaloutput)

我把它放在我的模块里/实用工具.py在我的静态目录中注册了我的资产。在

我希望能够像{copyright}}}一样直接在顶层调用该函数基本.html在我的主模板文件夹。在

我已经尽了一切努力来确保我加载静态文件没有运气。我走错路了吗?在


Tags: django函数模板消息defmore静态版权
2条回答

有几种方法可以实现你的最终目标,但你所做的一切都不会让你达到目标。在

你可以的

  1. Use template tags。在
  2. Use context processors,以几种不同的方式。在
  3. 如果使用的是Django中基于类的泛型视图,请在模板中按原样使用{{ view.function_name }}。在

从我认为你是如何设置的来看,最快的方法可能是在视图中传递一些上下文数据。在

如果使用的是函数视图,则代码可能如下所示:

def my_view(request):
    def copyright():
        return "copyright 2018"

    return render('my_template.html', {'copyright': copyright})

如果使用的是基于类的泛型视图,只需修改get_context_data。在

^{pr2}$

不幸的是,你在这里所做的一切都是错误的。在

这与静态文件无关:正如您自己所说,这是一个动态函数,因此从定义上讲不是静态的。无论如何,不能将Python代码放在assets目录中。最后,任何这样的函数都需要返回结果,而不是打印它。在

这里您需要的是一个模板标记,您可以将其放入应用程序的templatetags目录中,然后通过decorator进行注册:

@register.simple_tag
def copyright():
   some code
   some more code
   return finaloutput

然后,在模板中加载标记并将其作为标记而不是变量调用:

^{pr2}$

the template tags docs。在

相关问题 更多 >