Django使用心得(四)

2021-09-06 03:22:14 字數 2351 閱讀 6248

本篇主要講解如何在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...