Django(part12)--模板的标签
學(xué)習(xí)筆記,僅供參考
文章目錄
- 模板的標(biāo)簽
- if標(biāo)簽
- for標(biāo)簽
- for...empty標(biāo)簽
- cycle標(biāo)簽
- 注釋
- comment標(biāo)簽
- 舉幾個(gè)例子
模板的標(biāo)簽
- 作用
將一些服務(wù)器端的功能嵌入到模板中
- 標(biāo)簽語法
if標(biāo)簽
語法:
{%if條件表達(dá)式%} ... {%elif條件表達(dá)式%} ... {%else%} ... {%endif%}- if標(biāo)簽里的布爾運(yùn)算符
if條件表達(dá)式里可以用的運(yùn)算符:
==, !=, <, >, <=, >=, in, not in, is, is not, and, or在if標(biāo)記中實(shí)際括號(hào)是無效的語法。如果我們需要指示優(yōu)先級(jí),則應(yīng)使用嵌套的if標(biāo)記,而不能使用括號(hào)提高優(yōu)先級(jí)。
for標(biāo)簽
語法:
{% for 變量 in 可迭代對(duì)象 %} {% endfor %}內(nèi)置變量forloop:
| forloop.counter | 循環(huán)計(jì)數(shù)(從1開始) |
| forloop.counter0 | 循環(huán)計(jì)數(shù)(從0開始) |
| forloop.revcounter | 反向循環(huán)計(jì)數(shù)(從len(可迭代對(duì)象)開始,到1結(jié)束) |
| forloop.revcounter0 | 反向循環(huán)計(jì)數(shù)(從len(可迭代對(duì)象)-1開始,到0結(jié)束) |
| forloop.first | 如果是第1次循環(huán),則返回為真 |
| forloop.last | 如果是最后1次循環(huán),則返回為真 |
| forloop.parentloop | 當(dāng)存在循環(huán)嵌套時(shí),parentloop可循環(huán)當(dāng)前循環(huán)的父循環(huán) |
for…empty標(biāo)簽
語法:
{% for 變量 in 可迭代對(duì)象 %} {% empty %} {% endfor %}當(dāng)可迭代對(duì)象為空時(shí),就會(huì)走{% empty %}標(biāo)簽
cycle標(biāo)簽
循環(huán)從cycle列表后的參數(shù)中進(jìn)行取值,每次調(diào)用進(jìn)行一次更換。這個(gè)標(biāo)簽經(jīng)常用于循環(huán)中,如處理表格的隔行變色
語法:
{% for i in some_list %} <tr class="{% cycle 'row1' 'row2' %}"><td></td>...<td></td> </tr> {% endfor %}注釋
以{#開頭, 以#}結(jié)束范圍內(nèi)的文字信息將會(huì)被模板的渲染系統(tǒng)忽略掉
比如:
{# <h2>此處文字不會(huì)被生成HTML語句</h2> #}注意區(qū)別模板注釋和 HTML內(nèi)部注釋。
模板注釋在 HTML 解析時(shí)會(huì)直接被忽略,它不會(huì)生成 HTML 語句;而 HTML 注釋依然會(huì)保留在 HTML 網(wǎng)頁(yè)源代碼中,生成 HTML 語句,它是針對(duì)于瀏覽器的注釋。
comment標(biāo)簽
在{% comment %}和{% endcomment %}之間的內(nèi)容會(huì)被忽略。
比如:
{% comment %}{% if has_car %}<h1>{{ name }} 有車</h1>{% else %}<h1>{{ name }} 沒有車</h1>{% endif %} {% endcomment %}注意,comment標(biāo)簽不能嵌套使用
舉幾個(gè)例子
- 例子1(if標(biāo)簽)
page3.html
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Template</title> </head> <body><h1>這是我的第3個(gè)模板</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/發(fā)起請(qǐng)求:
- 例子2(if標(biāo)簽里的布爾運(yùn)算符)
page4.html
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Template</title> </head> <body><h1>這是我的第4個(gè)模板</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/發(fā)起請(qǐng)求:
- 例子3(for標(biāo)簽)
page5.html
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Template</title> </head> <body><h1>這是我的第5個(gè)模板</h1><h2>兔子列表</h2><ul>{% for i in bunny %}{% if forloop.first %}<li>-----我是第1行-----</li>{% endif %}<li>第{{forloop.counter}} 個(gè)兔子: {{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/發(fā)起請(qǐng)求:
- 例子4(empty標(biāo)簽)
page5.html
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Template</title> </head> <body><h1>這是我的第5個(gè)模板</h1><h2>兔子列表</h2><ul>{% for i in bunny %}{% if forloop.first %}<li>-----我是第1行-----</li>{% endif %}<li>第{{forloop.counter}} 個(gè)兔子: {{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/發(fā)起請(qǐng)求:
- 例子5(cycle標(biāo)簽)
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 + "今年已經(jīng)" + str(self.age) + "個(gè)月啦"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/發(fā)起請(qǐng)求:
總結(jié)
以上是生活随笔為你收集整理的Django(part12)--模板的标签的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Django(part11)--MTV模
- 下一篇: 第三次学JAVA再学不好就吃翔(part