{{...}} # 變量相關 {%...%} # 邏輯相關 {#...#} # 註釋
1 def test(request): 2 name = '張三' 3 age = 19 4 return render(request,'test.html',{'name':name,'age':19})
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>模板測試</title> 6 </head> 7 <body> 8 name:{{ name }} age:{{ age }} 9 </body> 10 </html>
1 def test(request): 2 name_list = ['張三', '李四', '王五'] 3 return render(request, 'test.html', {'list': name_list})
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>模板測試</title> 6 </head> 7 <body> 8 {{ list }} 9 <hr> 10 {% for name in list %} 11 {{ name }} 12 {% endfor %} 13 </body> 14 </html>
1 def test(request): 2 name_dict = {'firstname': 'zhang', 'lastname': 'san'} 3 return render(request, 'test.html', {'dict': name_dict})
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>模板測試</title> 6 </head> 7 <body> 8 {{ dict.firstname }} 9 {{ dict.lastname }} 10 </body> 11 </html>
1 class Person: 2 def __init__(self,firstname,lastname): 3 self.firstname = firstname 4 self.lastname = lastname 5 6 def show(self): 7 return 'my firstname is {},last name is {}'.format(self.firstname,self.lastname) 8 9 def __str__(self): 10 return 'person obj name is {} {}'.format(self.firstname,self.lastname) 11 12 def test(request): 13 p = Person('zhang','san') 14 return render(request, 'test.html', {'person': p})
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>模板測試</title> 6 </head> 7 <body> 8 {{ person.firstname }} 9 {{ person.lastname }} 10 <hr> 11 {{ person.show }} 12 <hr> 13 {{ person }} 14 </body> 15 </html>
語法: {{value|filter_name:params}} html
當所修飾的變量爲空時使用所指定的默認值jquery
1 def test(request): 2 v1= None 3 v2 = '有值' 4 return render(request, 'test.html', {'v1': v1,'v2':v2})
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>模板測試</title> 6 </head> 7 <body> 8 {{ v1|default:'空值' }} 9 <hr> 10 {{ v2|default:'空值' }} 11 </body> 12 </html>
文件大小格式化django
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>模板測試</title> 6 </head> 7 <body> 8 {{ 123456789|filesizeformat }} 9 </body> 10 </html>
切片app
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>模板測試</title> 6 </head> 7 <body> 8 {{ 'abcdefghijklmn'|slice:'::2'}} 9 </body> 10 </html>
時間格式化ide
1 def test1(request): 2 from datetime import datetime 3 now = datetime.now() 4 return render(request, 'test.html', {'now': now})
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>模板測試</title> 6 </head> 7 <body> 8 {{ now }} 9 <hr> 10 {{ now|date:'Y-m-d H:i:s'}} 11 </body> 12 </html>
不轉義輸出oop
1 def test(request): 2 a_tag = '<a href="http://www.baidu.com">超連接<a>' 3 return render(request, 'test.html', {'a_tag': a_tag})
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>模板測試</title> 6 </head> 7 <body> 8 {{ a_tag }} 9 <hr> 10 {{ a_tag|safe }} 11 </body> 12 </html>
顯示指定長度字符,多餘部分用'...'代替測試
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>模板測試</title> 6 </head> 7 <body> 8 {{ 'abcdefghijklmnopqrstuvwxyz'|truncatechars:10 }} 9 </body> 10 </html>
1 from django import template 2 3 register = template.Library() 4 5 6 @register.filter(name='append') 7 def add_sb(self, param1): 8 return '{}{}'.format(self, param1)
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>模板測試</title> 6 </head> 7 <body> 8 {% load myfilter %} 9 {{ '張三'| sb }} 10 </body> 11 </html>
1 from django import template 2 3 register = template.Library() 4 5 6 @register.simple_tag(name='add_str3') 7 def my_sum(str1, str2, str3): 8 return '{}{}{}'.format(str1, str2, str3)
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>test</title> 6 </head> 7 <body> 8 {% load mytag %} 9 10 {% add_str3 'a' 'b' 'c' %} 11 </body> 12 </html>
1 from django import template 2 3 register = template.Library() 4 5 6 @register.inclusion_tag('show_info_page.html') 7 def show_info(index): 8 list = [('張三', '男'), ('李四', '女')] 9 return {'person': list[index]}
1 <h3>個人名字叫{{ person.0 }}</h3> 2 <p>性別{{ person.1 }}</p>
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>test</title> 6 </head> 7 <body> 8 {% load mytag %} 9 {% show_info 1 %} 10 <hr> 11 {% show_info 0 %} 12 </body> 13 </html>
在母版頁中定義一個塊讓子頁面使用url
{% block [block name] %}
{% endblock %}
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 </head> 7 <body> 8 這是母版頁的內容 9 <hr> 10 {# 定義一個block塊讓子頁面替換 #} 11 {% block page-main %} 12 13 {% endblock %} 14 </body> 15 </html>
繼承母版頁spa
{% extends '[母版頁地址]' %}
{% block [block name] %}
{% endblock %}
1 {% extends 'base.html' %} 2 {%block page-main %} 3 這裏是子頁面的內容 4 {%endblock %}
Variable | Description |
---|---|
forloop.counter |
當前循環的索引值(從1開始) |
forloop.counter0 |
當前循環的索引值(從0開始) |
forloop.revcounter |
當前循環的倒序索引值(從1開始) |
forloop.revcounter0 |
當前循環的倒序索引值(從0開始) |
forloop.first |
當前循環是否是第一次循環(布爾值) |
forloop.last |
當前循環是否是最後一次循環(布爾值) |
forloop.parentloop |
本層循環的外層循環 |
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>模板測試</title> 6 </head> 7 <body> 8 {% for i in list %} 9 有值則遍歷 10 {% empty %} 11 空空如也 12 {% endfor %} 13 </body> 14 </html>
定義一箇中間變量3d
1 {% with total=list.count %} 2 {{ total }} 3 {% endwith %}
引入指定頁
{% include '[頁面地址]' %}
<p>in subpage.html</p>
1 {% include 'subpage.html' %} 2 <hr> 3 in test.html
動態獲取靜態文件夾別名來拼接靜態文件的url
配置以下
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static1"),
os.path.join(BASE_DIR, "static2"),
]
要訪問項目根目錄下文件夾static1裏的jquery.min.js文件,原來的寫法是:
<script src='/static/jquery.min.js'></script>
使用static的寫法是:
<script src="{% static 'jquery.min.js'%}"></script>
使用get_static_prefix的寫法是:
<script src='{% get_static_prefix %}jquery.min.js'></script>
也可給路徑起一個別名:
<script src="{% static 'jquery.min.js' as jquery_path %}"></script> <!-- 以後就能夠經過別名引入 --> <script src="{{ jquery_path }}"></script>