1. 程式人生 > >Django 內的母版-子html規則

Django 內的母版-子html規則

bio gist reg 文件名 不同 cat 是否 ret word

一、母版

在實際應用中,在開發一個網站時,從首頁到主頁、到目錄頁,等等!有時候,我們大部分基礎網頁頭、邊框、側邊框、基礎css、js等復用性很高,如果每一個html都要獨立去寫的話,就太麻煩了。
而把這些很多頁面都共用的東西抽取出來,使用面向對象的思想,讓子版去繼承這些母版,然後只需要自己不同就好了!而在Django 內是怎麽實現的呢

1.1 模版語言
  • {{ item }}
  • {% for item in item_list %} {{ item }} {% endfor %}
      forloop.counter #從1開始計數自增 1 2 3 4 ....
    forloop.revcounter #反轉計數自減
      forloop.first #是否是第一個循環
      forloop.last
  • {% if ordered_warranty %} {% else %} {% endif %}

  • 母板:{% block title %}{% endblock %} #母版中預留位置
  • 子板:{% extends "base.html" %} #子版引入母版
       {% block title %}{% endblock %} #子版中對應母版預留位置

幫助方法:

  • {{ item.event_start|date:"Y-m-d H:i:s"}}
  • {{ bio|truncatewords:"30" }} #截取30個字符
  • {{ my_list|first|upper }}
  • {{ name|lower }}
1.2 自定義simple_tag
  1. 在於app同名的文件夾下創建名為:templatetags文件夾

  2. 在該文件夾中穿件任意名稱的自己的py文件

  3. 在py文件中引入:

        from django import template
        rom django.utils.safestring import mark_safe
 
        #必須創建名稱為:register 的實例
        register = template.Library()

         #裝飾到自己的函數上
        @registrer.simple_tag
        def my_fun(*args):
            """do something with *args"""
            return result

        @register.simple_tag
        def my_input(id,arg):
            result = "< input type=‘text‘ id=‘%s‘ class=‘%s‘/>
" %(id,arg,) return mark_safe(result)
  • 在模版中下載自己的文件
    {% load 文件名 %}

  • 模版中使用該函數
    {% my_fun arg1 arg2 %}

Django 內的母版-子html規則