欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

剖析Django中模版標簽的解析與參數(shù)傳遞

 更新時間:2015年07月21日 09:09:34   投稿:goldensun  
這篇文章主要介紹了剖析Django中模版標簽的解析與參數(shù)傳遞,Django是重多高人氣Python框架中最為著名的一個,需要的朋友可以參考下

分析直至另一個模板標簽

模板標簽可以像包含其它標簽的塊一樣工作(想想 {% if %} 、 {% for %} 等)。 要創(chuàng)建一個這樣的模板標簽,在你的編譯函數(shù)中使用 parser.parse() 。

標準的 {% comment %} 標簽是這樣實現(xiàn)的:

def do_comment(parser, token):
  nodelist = parser.parse(('endcomment',))
  parser.delete_first_token()
  return CommentNode()

class CommentNode(template.Node):
  def render(self, context):
    return ''

parser.parse() 接收一個包含了需要分析的模板標簽名的元組作為參數(shù)。 它返回一個django.template.NodeList實例,它是一個包含了所有Node對象的列表,這些對象是解析器在解析到任一元組中指定的標簽之前遇到的內(nèi)容.

因此在前面的例子中, nodelist 是在 {% comment %} 和 {% endcomment %} 之間所有節(jié)點的列表,不包括 {% comment %} 和 {% endcomment %} 自身。

在 parser.parse() 被調(diào)用之后,分析器還沒有清除 {% endcomment %} 標簽,因此代碼需要顯式地調(diào)用 parser.delete_first_token() 來防止該標簽被處理兩次。

之后 CommentNode.render() 只是簡單地返回一個空字符串。 在 {% comment %} 和 {% endcomment %} 之間的所有內(nèi)容都被忽略。
分析直至另外一個模板標簽并保存內(nèi)容

在前一個例子中, do_comment() 拋棄了{% comment %} 和 {% endcomment %} 之間的所有內(nèi)容。當然也可以修改和利用下標簽之間的這些內(nèi)容。

例如,這個自定義模板標簽{% upper %},它會把它自己和{% endupper %}之間的內(nèi)容變成大寫:

{% upper %}
  This will appear in uppercase, {{ user_name }}.
{% endupper %}

就像前面的例子一樣,我們將使用 parser.parse() 。這次,我們將產(chǎn)生的 nodelist 傳遞給 Node :

def do_upper(parser, token):
  nodelist = parser.parse(('endupper',))
  parser.delete_first_token()
  return UpperNode(nodelist)

class UpperNode(template.Node):
  def __init__(self, nodelist):
    self.nodelist = nodelist

  def render(self, context):
    output = self.nodelist.render(context)
    return output.upper()

這里唯一的一個新概念是 UpperNode.render() 中的 self.nodelist.render(context) 。它對節(jié)點列表中的每個 Node 簡單的調(diào)用 render() 。

相關文章

  • 在Python程序和Flask框架中使用SQLAlchemy的教程

    在Python程序和Flask框架中使用SQLAlchemy的教程

    SQLAlchemy為Python程序與SQL語句之間建立了映射,是Python操作數(shù)據(jù)庫的利器,這里我們將來看在Python程序和Flask框架中使用SQLAlchemy的教程,需要的朋友可以參考下
    2016-06-06
  • Python下的Softmax回歸函數(shù)的實現(xiàn)方法(推薦)

    Python下的Softmax回歸函數(shù)的實現(xiàn)方法(推薦)

    下面小編就為大家?guī)硪黄狿ython下的Softmax回歸函數(shù)的實現(xiàn)方法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • python中extend功能用法舉例

    python中extend功能用法舉例

    這篇文章主要給大家介紹了關于python中extend功能的相關資料,Python中的extend()方法是一種非常有用的列表操作,它可以將一個列表中的元素添加到另一個列表的末尾,需要的朋友可以參考下
    2023-08-08
  • tornado+celery的簡單使用詳解

    tornado+celery的簡單使用詳解

    今天小編就為大家分享一篇tornado+celery的簡單使用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python實現(xiàn)調(diào)用jar或執(zhí)行java代碼的方法詳解

    Python實現(xiàn)調(diào)用jar或執(zhí)行java代碼的方法詳解

    這篇文章主要介紹了Python實現(xiàn)調(diào)用jar或執(zhí)行java代碼的方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • pytest官方文檔解讀fixtures調(diào)用fixtures及fixture復用性

    pytest官方文檔解讀fixtures調(diào)用fixtures及fixture復用性

    這篇文章主要為大家介紹了pytest官方文檔解讀fixtures調(diào)用fixtures及fixture復用性,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • python?魔法方法之?__?slots?__的實現(xiàn)

    python?魔法方法之?__?slots?__的實現(xiàn)

    本文主要介紹了python?魔法方法之?__?slots?__的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • python數(shù)字圖像處理之基本圖形的繪制

    python數(shù)字圖像處理之基本圖形的繪制

    這篇文章主要為大家介紹了python數(shù)字圖像處理之基本圖形的繪制,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • Python實現(xiàn)高效求解素數(shù)代碼實例

    Python實現(xiàn)高效求解素數(shù)代碼實例

    這篇文章主要介紹了Python實現(xiàn)高效求解素數(shù)代碼實例,本文直接給出代碼實例,需要的朋友可以參考下
    2015-06-06
  • Python 數(shù)據(jù)可視化pyecharts的使用詳解

    Python 數(shù)據(jù)可視化pyecharts的使用詳解

    這篇文章主要介紹了Python 數(shù)據(jù)可視化pyecharts的使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-06-06

最新評論