第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Django HTML 模板中包含一個簡單的函數(shù)

在 Django HTML 模板中包含一個簡單的函數(shù)

繁星點點滴滴 2021-09-25 18:25:32
我目前有一個名為“copyright”(動態(tài)版權(quán)消息)的函數(shù),我試圖將其包含到我的基本 Django 模板中,如下所示:def copyright():   some code   some more code   print(finaloutput)我把它放在我的 modules/utils.py 中,它位于我在靜態(tài)目錄中注冊的資產(chǎn)目錄中。我希望能夠直接在我的主模板文件夾內(nèi)的頂級 base.html 中調(diào)用該函數(shù),例如 {{copyright}}。我已經(jīng)嘗試了一切以確保我在沒有運氣的情況下加載靜態(tài)文件。我是否以錯誤的方式接近這個?
查看完整描述

2 回答

?
UYOU

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)簽文檔。


查看完整回答
反對 回復(fù) 2021-09-25
?
慕勒3428872

TA貢獻1848條經(jīng)驗 獲得超6個贊

有幾種方法可以實現(xiàn)您的最終目標(biāo),但是您所做的任何事情都不會使您達到目標(biāo)。

你可以,

  1. 使用模板標(biāo)簽。

  2. 以幾種不同的方式使用上下文處理器。

  3. 使用{{ 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"


查看完整回答
反對 回復(fù) 2021-09-25
  • 2 回答
  • 0 關(guān)注
  • 230 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號