1. 程式人生 > >Django小筆記-模板及Django高階擴充套件

Django小筆記-模板及Django高階擴充套件

定義模板     變數         檢視傳遞給模板的資料         要遵守識別符號規則         語法:{{var}}         注意:若變數不存在,則插入的是空字串         在模板中使用點語法                 字典查詢                 屬性或者方法                 數字索引         在模板中呼叫物件的方法                 注意:在模板裡定義的函式不能傳遞self以外的引數

    標籤         語法:{% tag %}         作用:在輸出中建立文字               控制邏輯和迴圈         if標籤             格式                      {% if 表示式 %}                         語句                     {% endif %}             if-else 格式                            {% if 表示式 %}                             語句1                         {% else %}                             語句else                         {% endif %}             if-elif-else 格式                          {% if 表示式1 %}                             語句1                         {% elif 表示式2 %}                             語句2                         ...

                        {% else %}                             語句else                         {% endif %}             例項{% if num %}                     <h1>sunck  nice</h1>                 {% endif %}

        for標籤             格式1                {% for 變數 in 列表 %}                     語句                {% endfor %}             格式2                {% for 變數 in 列表 %}                     語句1                {% empty %}  # 注意:列表為空或者列表不存在時執行語句2                     語句2                {% endfor %}             格式3                {{ forloop.counter }}    #表示當前是第幾次迴圈             例項<h1>學生列表</h1>                 <ul>                     {% for stu in students %}                         <li>                             {{forloop.counter}}--{{stu.sname}}--{{stu.sgrade}}                         </li>                 </ul>

        comment標籤             作用:相當於多行註釋,被註釋的內容不再執行             格式 {% comment %}                     多行註釋                  {% endcomment %}

        ifequal/ifnotequa標籤             作用 判斷是否相等或者不相等             格式{% ifequal 值1 值2 %}                    語句1                 {% endifequal %}  # 如果值1等於值2,執行語句1,否則不執行語句1             例項{% ifequal 'sunck' 'sunck' %}                     <h1>sunck handsome</h1>                 {% endifequal %}

        include標籤             作用:載入模板並以標籤內的引數渲染             格式:{% include '模板目錄' 引數1 引數2 %}

        url標籤             作用:反射解析(具體見下文“反向解析”)             格式:{% url 'namespace: name' p1 p2 %}                      csrf_token標籤             作用:用於跨站請求偽造保護             格式:{% csrf_token %}

        block, extends標籤             作用:用於模板的繼承

        autoescape標籤             作用:用於HTML轉義

    過濾器         語法 {{ var|過濾器 }}         作用:在變數被顯示前修改它,只是加一個效果,對變數不會造成影響         lower:全小寫         upper:全大寫         例項:<h1>{{str|upper}}</h1>  <!--過濾器(變成大全寫)-->         過濾器可以傳遞引數,引數用引號引起來             join                 格式:列表|join:"#"                 例項:<h1>{{list|join:'#'}}</h1>返回good#nice#handsome         如果一個變數沒有被提供,或者值為false,空,可以使用預設值             default                 格式: {{var|default:"沒有"}}                 例項:<h1>{{text|default:"沒有"}}</h1>    返回“沒有”         根據給定格式轉換日期為字串             date                 格式: {{dateVal|date:'y-m-d'}}         HTML轉義             escape         加減乘除             例項<h1>num = {{num|add:10}}</h1>   <!--加-->                 <h1>num = {{num|add:-10}}</h1>  <!--減-->                 <h1>num = {% numwidthratio num 1 5%}</h1><!--num/1*5-->   <!--乘-->                 <h1>num = {% num widthratio num 5 1%}</h1>  <!--除-->         註釋             單行註釋    語法{#註釋內容 #}             多行註釋    語法{% comment %}                             註釋內容                         {% endcomment %}

    反向解析         當修改project/urls.py的正則,其他匹配的正則也要隨之改變,當正則表示式很多的時候,這樣就會很麻煩甚至會報錯         例項:../project/urls.py               url(r"^", include('myApp.urls',namespace="app"))                ../myApp/urls.py               url(r"^$",views.index),               url(r'^good/(\d+)/$',views.good,name="good"),               ../myApp/views.py               def index(request):                          student = Students.objects.get(pk=1)                 return render(request, 'myApp/index.html', {"stu": student,"num": 10,"str":"sunck good","list":["good","nice","handsome"]})               def good(request,id):                   return render(request,'myApp/good.html',{"num":id})               ../templates/good.html               <h1>good</h1>               ../templates/index.html               <a href="{% url 'app:good' 1 %}">連結</a> 

    模板繼承         作用:模板繼承可以減少頁面的重複定義,實現頁面的重用         block標籤:在父模板中預留區域 ,子模板去填充             語法:{% block 標籤名 %}

                  {% endblock 標籤名 %}         extends標籤:繼承模板,需要寫在模板檔案的第一行             語法 : {% extends '父模版路徑myApp/base.html' %}                     {% block main %}                         內容                     {% endblock 標籤名 %}         例項:templates/myApp/base.html(父模板)                 <!DOCTYPE html>                 <html lang="en">                 <head>                     <meta charset="UTF-8">                     <title>Title</title>

                    <style>                         #header{                             width: 100%;                             height: 100px;                             background-color: red;                         }                         #footer{                             width: 100%;                             height: 100px;                             background-color: blue;                         }                     </style>

                </head>                 <body>                     <div id="header">header</div>

                    <div id="main">                         {% block main %}

                        {% endblock main %}                         <hr/>                         {% block main2 %}

                        {% endblock main2 %}                     </div>

                    <div id="footer">footer</div>                 </body>                 </html>