2 回答

TA貢獻(xiàn)1878條經(jīng)驗(yàn) 獲得超4個(gè)贊
不幸的是,您在這里所做的幾乎所有事情都是錯(cuò)誤的。
這與靜態(tài)文件無(wú)關(guān):正如您自己所說(shuō),這是一個(gè)動(dòng)態(tài)函數(shù),因此根據(jù)定義不是靜態(tài)的。無(wú)論如何,您不能將 Python 代碼放在您的資產(chǎn)目錄中。最后,任何像這樣的函數(shù)總是需要返回結(jié)果,而不是打印它。
這里你需要的是一個(gè)模板標(biāo)簽,你把它放在你的應(yīng)用程序的 templatetags 目錄中并通過(guò)裝飾器注冊(cè):
@register.simple_tag
def copyright():
some code
some more code
return finaloutput
然后,在模板中加載標(biāo)簽并將其稱為標(biāo)簽,而不是變量:
{% load utils %} # or whatever you called the file
...
{% copyright %}
請(qǐng)參閱模板標(biāo)簽文檔。

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超6個(gè)贊
有幾種方法可以實(shí)現(xiàn)您的最終目標(biāo),但是您所做的任何事情都不會(huì)使您達(dá)到目標(biāo)。
你可以,
以幾種不同的方式使用上下文處理器。
使用
{{ view.function_name }}
AS-是在你的模板,如果你使用的是來(lái)自Django的基于類的通用視圖。
從我認(rèn)為您設(shè)置的方式來(lái)看,最快的方法可能是在您的視圖中傳遞一些上下文數(shù)據(jù)。
如果您使用功能視圖,您的代碼可能如下所示:
def my_view(request):
def copyright():
return "copyright 2018"
return render('my_template.html', {'copyright': copyright})
如果您使用基于類的通用視圖,您可以簡(jiǎn)單地修改您的get_context_data.
class Home(TemplateView):
def get_context_data(self, *args, **kwargs):
ctx = super(TemplateView, self).get_context_data(self, *args, **kwargs)
ctx['copyright'] = self.copyright()
return ctx
def copyright(self):
return "copyright 2018"
添加回答
舉報(bào)