本篇主要講解如何在django的模板中自定義tag。
主要內容:
自定義tag主要有以下5步:
1.1 新建django工程 customtags。建立方法參見django使用心得(一)
1.2 新建資料夾templatetags,好像必須是這個名字。
1.3 在資料夾templatetags中新建乙個空檔案__init__.py,表明templatetags是個python模組。
1.4 在此資料夾中新建python檔案,並實現自定義的tag。
1.6 在模板中先load自定義tag所在的模組,在使用自定義tag。
下面實現上面步驟 1.3。在templatetags資料夾中新建檔案mytags.py,內容如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from django import template
register = template.library()
def do_tags_without_para( parser, token ):
return tagswithoutpara()
def do_tags_with_para( parser, token ):
paras = token.split_contents()
if len( paras ) != 6:
raise template.templatesyntaxerror("this tag takes exactly five arguments")
return tagswithpara(paras)
class tagswithoutpara( template.node ):
def render( self, context ):
context['content'] = "my custom tags without parameters"
return ''
class tagswithpara( template.node ):
def __init__( self, paras ):
self.paras = paras
def render( self, context ):
context['paras_0'] = self.paras[0]
context['paras_1'] = self.paras[1]
context['paras_2'] = self.paras[2]
context['paras_3'] = self.paras[3]
context['paras_4'] = self.paras[4]
context['paras_5'] = self.paras[5]
return ''
register.tag('custom_tags_without_para', do_tags_without_para)
register.tag('custom_tags_with_para', do_tags_with_para)
實現乙個自定義tag的方法
content is :
parameters are :
注意,這裡是templatetags所在模組,而不是上面mytags.py所在的模組。
然後執行時模板始終找不到自定義的tag。
這也是本文開始時【1.2 新建資料夾templatetags,好像必須是這個名字。】的原因。
我的整個示例工程的結構如下:
d:\vim\python\django
|- customtags
| |- __init__.py
| |- manage.py
| |- settings.py
| |- urls.py
| |- views.py
| |
| `- templatetags
| |- __init__.py
| `- mytags.py
|`- django-templates
`- customtags
`- index.html
執行後頁面如下:
Django使用心得(一)
本篇主要講解一些基本的操作 安裝完django之後,在python安裝目錄下的scripts目錄中有個django admin.py的指令碼,可以用來新建django工程。django admin.py startproject testsite1新建了乙個名為testsite1的工程,非常簡單。t...
frameset 使用心得
欲明白本篇 html徹底剖析 之標記分類,請看 標記一覽 也請先明白圍堵標記與空標記的分別,請看 html概念 框架概念 謂框架便是網頁畫面分成幾個框窗,同時取得多個 url。只需要 即可,面所有框架標記需要放在乙個總起的 html 檔,這個檔案只記錄了該框架如何分割 不會顯示任何資料,所以不必放入...
Access使用心得
今天臨時用access做資料庫,長期用sql server開發習慣了,總結一下現在為止用到的比較大的差異,以後有新的再補了 1 返回字串長度 len s lenb s 前者返回字元數,後者返回位元組數,並且access中text型別字元統一為2位元組,與sql2000不同。2 join的使用 acc...