1.前言
首先,我們要知道html是一門靜態語言,裏面沒法傳一些動態參數,也就是一個寫死的html頁面。
那麼,如果我們想實現在一個html頁面裏傳入不同的參數對應的參數值,這就可以用django框架提供的模板傳參功能來解決。
2.模板傳參
2.1.先在hello應用下或者【helloworld/hello/】下新建一個templates文件夾,具體層級目錄如下。
2.2.在【helloworld/hello/templates】下新建一個【hongjingsheng.html】,【hongjingsheng.html】裏的模板變量用{{變量名稱}}來表示。
2.3.修改【helloworld/helloworld/settings】下的一個常量【TEMPLATES】裏第一個下標值對應的值裏的的【DIRS】值爲【[str(BASE_DIR)+"/hello/templates",]】。
備註:具體使用原理可以參考這篇文章:https://segmentfault.com/q/1010000013866755。
2.4.在【helloworld/hello/views.py】裏新增一個視圖函數【hongjingsheng】。
2.5.在【helloworld/helloworld/urls.py】裏新增一個url匹配規則【url(r"^xiaohong/$",views.hongjingsheng)】。
2.6.接着,啓動django項目【helloworld】的服務,在任一瀏覽器上輸入地址【http://127.0.0.1:8000/xiaohong/】,可以得到正確的頁面數據。
3.django常用的模板標籤
3.1. if/else標籤
條件判斷採用if/else標籤。
注意點:if語句最後一定要以endif結尾!
{% if condition1 %} 執行這裏面的代碼塊A {% elif condition2 %} 執行這裏面的代碼塊B {% else %} 執行這裏面的代碼塊C {% endif %} # end表示該if語句結束。
3.2. for標籤
與python語言裏的for語句的情形類似,for標籤的循環語法是【for X in Y】:Y是要迭代的序列,X是在每一個特定的循環中使用的變量名稱。
每一次循環中,django的html模板渲染機制會渲染在 {% for %} 和 {% endfor %} 之間的所有內容。
注意點:for標籤最後一定要以endfor結尾!
<ul> {% for athlete in athlete_list %} <li>{{ athlete.name }}</li> {% endfor %} </ul>
3.3. ifequal標籤
{% ifequal 變量A的變量值 變量B的變量值 %} 標籤用於比較兩個變量的變量值:當兩個變量的變量值相等時,執行在 {% ifequal %} 和 {% endifequal %} 之中所有的代碼塊。
注意點:ifequal標籤最後一定要以endifequal結尾!
舉個例子,用ifequal標籤來比較兩個模板變量 user 和 currentuser :
{% ifequal user currentuser %} <h1>Welcome!</h1> {% endifequal %}
和 {% if %} 類似, {% ifequal %} 支持可選的 {% else%} 標籤。
舉個例子,用ifequal標籤來比較一個模板變量 section 和一個數據類型爲str的值"sitenews" :
{% ifequal section 'sitenews' %} <h1>Site News</h1> {% else %} <h1>No News Here</h1> {% endifequal %}
3.4. ifnotequal標籤
{% ifnotequal 變量A的變量值 變量B的變量值 %} 標籤用於比較兩個變量的變量值:當兩個變量的變量值不相等時,執行在 {% ifequal %} 和 {% endifequal %} 之中所有的代碼塊。
注意點:ifnotequal標籤最後一定要以endifnotequal結尾!
舉個例子,用ifnotequal標籤來比較兩個模板變量 user 和 currentuser :
{% ifnotequal user currentuser %}
<h1>Welcome!</h1>
{% endifnotequal %}
和 {% if %} 類似, {% ifnotequal %} 支持可選的 {% else%} 標籤。
舉個例子,用ifnotequal標籤來比較一個模板變量 section 和一個數據類型爲str的值"sitenews" :
{% ifnotequal section 'sitenews' %}
<h1>Site News</h1>
{% else %}
<h1>No News Here</h1>
{% endifnotequal %}
3.5. 註釋標籤
django的html模板的註釋標籤,是使用{# #}。
3.6. 其餘常用標籤
其餘常用django模板標籤的使用,可以參考該菜鳥教程:https://www.runoob.com/django/django-template.html。
這些內容直接用截圖的形式來記錄,不多做文字上面的分析了。
具體知識點,都可以參考該菜鳥教程:https://www.runoob.com/django/django-template.html。
3.7. 關於模板標籤的具體使用
目前只用截圖的形式來記錄調試過程的相關重要細節,讓大家對模板標籤的具體使用有個初步印象。
4.django常用的過濾器
django常用的過濾器,也仍然可以參考該菜鳥教程:https://www.runoob.com/django/django-template.html。
過濾器的具體使用,該菜鳥教程裏都有具體代碼範例,所以這邊就不做相關記錄了。 這些過濾器的使用,可以不懂的時候當做新華字典來進行查閱和使用。