模板標籤

1.經常使用的模板標籤
    -做用是什麼?提供各類邏輯
    -模板標籤格式  大括號 百分號 語句 百分號 大括號,還要有結尾也是大括號 百分號 end語句 百分號 大括號
                              好比 {% for item in items %}   
                               item.元素1
                               item.元素2
                               item.元素3
                                 .......
                          {% endfor %}
        其中items能夠是視圖函數傳過來的參數裏的模板變量,模板標籤裏能夠經過循環取得它裏邊的元素,依次把這些元素進行渲染,去執行模板標籤和模板結尾標籤之間定義的操做,循環直到取完items裏邊的元素爲止css

{% for stu in students %}
            <tr {% if stu.sex == "女" %} style="color: red"{% endif %}>
                <td><a href="{% url 'teacher:detail' stu.id %}">{{forloop.counter}}</a></td>
                <td>{{stu.name}}</td>
                <td>{{stu.age}}</td>
                <td>{{stu.sex}}</td>
            </tr>
            {% endfor %}

    -經常使用標籤  for、 if、
        (1)其中if語句的關係運算符==,<,>,<=,>= 運算符先後必須有空格,能夠
            {% if a== 'aaa' %}  此狀況下執行某某語句
            {% elif a>'aaa' %} 此狀況下執行某某語句
            {% else %}
            {% endif %}
        (2)url標籤是單標籤不用有endurl  {% url 空格'app:視圖函數'空格 須要傳的參數1 空格 參數2 %},url模板標籤也能夠動態解析url,
            注意:'app:視圖函數'先後不要加'/',須要提早在urls.py中爲app命名,以及給相應視圖函數的path起名name='某某某名字'
        (3)with {% with s2 = students.2%}
                        {% endwith %}
          (4)循環的模板標籤裏想取得序號,可使用{{forloop.counter}},forloop能夠獲取當前for循環的迭代次數,.counter是下標以1開始,.counter0是下標從0開始
    想讓循環迭代次數從大到小排是.revcounter,以1結束,.revcounter0是以0結束
        
        總結:本質仍是字符串格式化,語法 :
        {% tag %} {% endtag %}
        {% tag 參數 參數 %}
    注意在模板標籤的{}裏用到的模板變量不用再加雙層花括號了,變量名就能用,在模板標籤和模板結尾標籤之間的語句裏模板變量要用雙層花括號
    
2.模板的繼承與引用  (include 和extends也是模板標籤)
    -引用 include標籤   {% include 路徑 %}能夠把別的模板渲染完後的內容放到其餘模板裏你想放的位置,include標籤是單獨的標籤,沒有結尾標籤,能夠用於插入廣告模板頁面等,他的參數就是其餘想引用的模板頁面的路徑
    -繼承 extends標籤 解決前端代碼冗餘
        (1)步驟:1)新建base模板,把全部模板最基本的共同內容寫到base裏,把其餘模板須要更改的部分都去掉
                  2)在須要繼承base模板的咱們定義的模板,最上面寫extends標籤{% extends 'app名/base.html' %},extends標籤必須在模板文本最上面,注意標籤裏百分號後,extends後,路徑後 都要有空格
                    繼承的父模板外用引號括起來
                  3) 某個模板文本最上寫上extends標籤後,就表明它繼承base父模板,它本身自己的內容就都不起做用了,只會顯示繼承自父模板的內容,去返回父模板所渲染的東西html

<title>{% block title %}base模板{% endblock %}</title>
    {% block link %}
        這裏引入你本身想用的css文件吧...
    {% endblock %}
{% block c1 %}
        <p>abcdefgh....</p>
    {% endblock %}

上面這些是父模板中的代碼前端

{% extends 'teacher/base.html' %}
{% block link %}
    {% load static %}
    <link href="{% static 'teacher/css/login_1.css'%}" rel="stylesheet">
{% endblock %}
{% block title %}loginteacher{% endblock %}
{% block c1 %}
    <div class="container">

      <form class="form-signin">
        <h2 class="form-signin-heading">Please sign in</h2>
        <label for="inputEmail" class="sr-only">Email address</label>
        <input type="email" id="inputEmail" class="form-control" placeholder="Email address" required autofocus>
        <label for="inputPassword" class="sr-only">Password</label>
        <input type="password" id="inputPassword" class="form-control" placeholder="Password" required>
        <div class="checkbox">
          <label>
            <input type="checkbox" value="remember-me"> Remember me
          </label>
        </div>
        <button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>
      </form>

    </div> <!-- /container -->
    {% endblock %}

這是自定義的模板中的代碼python


         (2) block標籤 :base模板比如字符串中佔位符,預留出來給繼承它的模板顯示本身的內容
              注意,block標籤是寫父模板文本base.html中的時候,是留坑留給繼承它的模板頁面的,
                  block標籤寫在自定義的有個性內容的模板文本中的時候,能夠填坑去定義本模板自定義的個性內容
                  本質仍是字符串格式化,佔位坑想挖幾個挖幾個,想挖哪裏挖哪裏
              語法 1)父模板中,想留空的位置{% block 隨便起個名字 %}  。。。。{% endblok %}    block標籤也是閉合標籤,要有結束標籤,起的名字不要加引號擴起來
                    父模板中能夠插入多個不一樣命名的block標籤和它本身的結尾block標籤
                    block標籤還能寫到html頁面標籤當中,好比<title>{% block title %}base模板{% endblock %}</title>
                     2)繼承父模板的自定義模板中,想自定義東西的位置寫成對的block標籤和結尾block標籤名字要和副模版中對應的block標籤名字相同,好比頭部block標籤裏定義css樣式,body裏定義自定義顯示的內容
                        {% block 和父模板中對應的block標籤同樣的名字 %}
                        任何自定義內容
                        {% endblock %}
                        若是副模版的block標籤寫在html標籤中,自定義模板文本對應名字的block標籤直接寫html標籤裏的內容就能夠了,外面的html標籤都繼承過來了
                    多個自定義模板能夠繼承同一個父模板,能夠像python裏的類同樣屢次繼承,咱們能夠繼承一個父模板,它繼承了別的父模板
                   3)技巧:父模板和自定義模板儘量多挖坑,
                    常見的挖的坑都有:(1)定義一個頁面底部的block標籤{% block domready %}{% endblock %}用來留給自定義模板放js代碼的地方
                                  (2)頁面上部定義的放css的坑
                                   (3)頁面上部定義的放script代碼的坑
            



app

相關文章
相關標籤/搜索