国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - 剖析Django中模板標簽的解析與參數傳遞

剖析Django中模板標簽的解析與參數傳遞

2020-07-25 11:29Python教程網 Python

這篇文章主要介紹了剖析Django中模板標簽的解析與參數傳遞,Django是重多高人氣Python框架中最為著名的一個,需要的朋友可以參考下

分析直至另一個模板標簽

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

標準的 {% comment %} 標簽是這樣實現的:

?
1
2
3
4
5
6
7
8
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() 接收一個包含了需要分析的模板標簽名的元組作為參數。 它返回一個django.template.NodeList實例,它是一個包含了所有Node對象的列表,這些對象是解析器在解析到任一元組中指定的標簽之前遇到的內容.

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

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

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

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

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

?
1
2
3
{% upper %}
  This will appear in uppercase, {{ user_name }}.
{% endupper %}

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

?
1
2
3
4
5
6
7
8
9
10
11
12
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 簡單的調用 render() 。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 精品玖玖玖 | 亚洲欧洲av在线 | 爱色av网| 国产精品免费一区二区 | 国产精品久久久久久久久晋中 | 国产日韩视频在线观看 | 久久久久99啪啪免费 | 色综合久久久久 | 国产精品美女久久久久久久久久久 | 国产成在线观看免费视频 | 亚洲一区 中文字幕 | 91在线免费视频 | 国产日韩一区二区 | 日本视频免费高清一本18 | bxbx成人精品一区二区三区 | 色噜噜狠狠狠综合曰曰曰88av | 国产免费一区二区三区 | 嫩草影院地址 | 亚洲综合视频 | 精品国产一区二区三区在线观看 | 黄色二区| 日韩欧美一区二区三区免费观看 | 中文字幕在线观看免费 | 国产精品免费看片 | 天堂网av在线 | 搞黄视频在线观看 | 精品国产黄a∨片高清在线 天天色天天色 | 亚洲精品一区中文字幕乱码 | 日本一区二区三区四区 | 亚洲国产一区二区在线观看 | 国产乱码精品一区二区三区忘忧草 | 成人影院www在线观看 | 欧美xo影院 | 欧美日韩国产精品一区 | 91久久精品国产91久久 | 久久久精品免费观看 | 久久亚洲精品国产精品紫薇 | 成人免费日韩 | 免费啪啪网站 | 精品国产乱码久久久久久影片 | 羞羞的视频 |