我正在尋找一種呈現變量的方法,該變量將在呈現cms頁(yè)面的頁(yè)面上下文中可用。
例如:在上下文中,我有一個(gè)已登錄的用戶(hù),也有他在網(wǎng)站上進(jìn)行的最后一筆交易。
我希望Wagtail的RTF文本字段中的文本像這樣,以便營(yíng)銷(xiāo)團隊可以調整副本。
您好||名字|| 謝謝你的惠顧。||產(chǎn)品名稱(chēng)|| 很快就會(huì )發(fā)貨給您。預期的交付日期是|| expected_delivery_date ||
為了避免混淆,我用雙管道替換了雙括號,以表明模板系統不需要是這些模板的django模板。簡(jiǎn)單的模板就足夠了,也許使用https://docs.python.org/3.4/library/string.html#template-strings 我想我可以通過(guò)以下方法實(shí)現:
在富文本字段中還有其他更明顯的方法或開(kāi)箱即用的方法來(lái)做模板嗎?
對于每個(gè)插入的上下文變量,使用單獨的流域塊可能會(huì )很麻煩。您必須覆蓋將元素包裝在div標簽中的默認呈現。但是我喜歡它對于編輯者來(lái)說(shuō)更加簡(jiǎn)單。
我之前做過(guò)類(lèi)似自定義渲染的操作,但是使用了簡(jiǎn)單的TextField來(lái)格式化特價(jià)商品代碼消息。Wagtail編輯器的內容如下help_text:
valid_placeholders = ['offer_code', 'month_price']template_text = models.TextField( _('text'), help_text="Valid placeholder values are: {all_valid}. Write as {{{example}}}".format( all_valid=", ".join(valid_placeholders), example=valid_placeholders[0], ))呈現為有效占位符的值是:offer_code,month_price。寫(xiě)為{{offer_code}}。
然后在視圖中:
template_keys = [i[1] for i in Formatter().parse(template_text)]…并從那里繼續渲染。切記也要使用上述Formatter().parse()功能正確驗證該字段。
我使用Django的模板格式而不是Python的string.format(),因為它會(huì )以靜默方式失敗,但是如果進(jìn)行了充分的清理,則可以使用string.format()。
自定義模板過(guò)濾器對我來(lái)說(shuō)最簡(jiǎn)單,所以我會(huì )從這種方法開(kāi)始,如果遇到障礙則切換到自定義渲染功能。
聯(lián)系客服