2 回答

TA貢獻1878條經(jīng)驗 獲得超4個贊
不幸的是,您在這里所做的幾乎所有事情都是錯誤的。
這與靜態(tài)文件無關(guān):正如您自己所說,這是一個動態(tài)函數(shù),因此根據(jù)定義不是靜態(tài)的。無論如何,您不能將 Python 代碼放在您的資產(chǎn)目錄中。最后,任何像這樣的函數(shù)總是需要返回結(jié)果,而不是打印它。
這里你需要的是一個模板標(biāo)簽,你把它放在你的應(yīng)用程序的 templatetags 目錄中并通過裝飾器注冊:
@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 %}
請參閱模板標(biāo)簽文檔。

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