Django(part12)--模板的标签
學習筆記,僅供參考
文章目錄
- 模板的標簽
- if標簽
- for標簽
- for...empty標簽
- cycle標簽
- 注釋
- comment標簽
- 舉幾個例子
模板的標簽
- 作用
將一些服務器端的功能嵌入到模板中
- 標簽語法
if標簽
語法:
{%if條件表達式%} ... {%elif條件表達式%} ... {%else%} ... {%endif%}- if標簽里的布爾運算符
if條件表達式里可以用的運算符:
==, !=, <, >, <=, >=, in, not in, is, is not, and, or在if標記中實際括號是無效的語法。如果我們需要指示優先級,則應使用嵌套的if標記,而不能使用括號提高優先級。
for標簽
語法:
{% for 變量 in 可迭代對象 %} {% endfor %}內置變量forloop:
| forloop.counter | 循環計數(從1開始) |
| forloop.counter0 | 循環計數(從0開始) |
| forloop.revcounter | 反向循環計數(從len(可迭代對象)開始,到1結束) |
| forloop.revcounter0 | 反向循環計數(從len(可迭代對象)-1開始,到0結束) |
| forloop.first | 如果是第1次循環,則返回為真 |
| forloop.last | 如果是最后1次循環,則返回為真 |
| forloop.parentloop | 當存在循環嵌套時,parentloop可循環當前循環的父循環 |
for…empty標簽
語法:
{% for 變量 in 可迭代對象 %} {% empty %} {% endfor %}當可迭代對象為空時,就會走{% empty %}標簽
cycle標簽
循環從cycle列表后的參數中進行取值,每次調用進行一次更換。這個標簽經常用于循環中,如處理表格的隔行變色
語法:
{% for i in some_list %} <tr class="{% cycle 'row1' 'row2' %}"><td></td>...<td></td> </tr> {% endfor %}注釋
以{#開頭, 以#}結束范圍內的文字信息將會被模板的渲染系統忽略掉
比如:
{# <h2>此處文字不會被生成HTML語句</h2> #}注意區別模板注釋和 HTML內部注釋。
模板注釋在 HTML 解析時會直接被忽略,它不會生成 HTML 語句;而 HTML 注釋依然會保留在 HTML 網頁源代碼中,生成 HTML 語句,它是針對于瀏覽器的注釋。
comment標簽
在{% comment %}和{% endcomment %}之間的內容會被忽略。
比如:
{% comment %}{% if has_car %}<h1>{{ name }} 有車</h1>{% else %}<h1>{{ name }} 沒有車</h1>{% endif %} {% endcomment %}注意,comment標簽不能嵌套使用
舉幾個例子
- 例子1(if標簽)
page3.html
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Template</title> </head> <body><h1>這是我的第3個模板</h1><h2>{{name}}{%if has_bunny %}有{% else %}沒有{% endif %}兔子</h2></body> </html>urls.py
urlpatterns = [path('admin/', admin.site.urls),re_path(r'page3_template/$', views.page3_template),]views.py
def page3_template(request):d = {"name":"Ada","has_bunny":True}return render(request, "page3.html", d)向http://127.0.0.1:8000/page3_template/發起請求:
- 例子2(if標簽里的布爾運算符)
page4.html
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Template</title> </head> <body><h1>這是我的第4個模板</h1><h2>{{name}}是一只{%if age < 5 %}幼{% elif age > 60 %}老年{% else %}成年{% endif %}兔</h2></body> </html>urls.py
urlpatterns = [path('admin/', admin.site.urls),re_path(r'page4_template/$', views.page4_template), ]views.py
def page4_template(request):d = {"name":"Huang","age":10}return render(request, "page4.html", d)向http://127.0.0.1:8000/page4_template/發起請求:
- 例子3(for標簽)
page5.html
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Template</title> </head> <body><h1>這是我的第5個模板</h1><h2>兔子列表</h2><ul>{% for i in bunny %}{% if forloop.first %}<li>-----我是第1行-----</li>{% endif %}<li>第{{forloop.counter}} 個兔子: {{i}}</li>{% endfor %}</ul></body> </html>urls.py
urlpatterns = [path('admin/', admin.site.urls),re_path(r'page5_template/$', views.page5_template) ]views.py
def page5_template(request):d = {"bunny":["Huang", "Bai", "Tim"]}return render(request, "page5.html", d)向http://127.0.0.1:8000/page5_template/發起請求:
- 例子4(empty標簽)
page5.html
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Template</title> </head> <body><h1>這是我的第5個模板</h1><h2>兔子列表</h2><ul>{% for i in bunny %}{% if forloop.first %}<li>-----我是第1行-----</li>{% endif %}<li>第{{forloop.counter}} 個兔子: {{i}}</li>{% empty %}<li>-----沒有兔子-----</li>{% endfor %}</ul></body> </html>views.py
def page5_template(request):d = {"bunny":[]}return render(request, "page5.html", d)向http://127.0.0.1:8000/page5_template/發起請求:
- 例子5(cycle標簽)
page6.html
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>兔兔之家</title> </head> <body><table>{% for i in bunny %}<tr style="background:{% cycle 'blue' 'green' %}"><th>名字:{{i.name}}</th><th>年齡:{{i.age}}</th></tr>{% endfor %}</table></body> </html>urls.py
urlpatterns = [path('admin/', admin.site.urls),re_path(r'page6_template/$', views.page6_template), ]views.py
class Bunny:def __init__(self, name, age):self.name = nameself.age = agedef speak(self):string = self.name + "今年已經" + str(self.age) + "個月啦"return stringdef page6_template(request):d = {"bunny":[Bunny("Huang", 10), Bunny("Bai", 11), Bunny("Tim", 8)]}return render(request, "page6.html", d)向http://127.0.0.1:8000/page6_template/發起請求:
總結
以上是生活随笔為你收集整理的Django(part12)--模板的标签的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Django(part11)--MTV模
- 下一篇: Flash如何绘制蓝色卡通帅气的男生(w