传入变量
{{ 变量名 }}
在 view.py 的函数返回 render 时在html文件名后传入一个字典,字典的 key 对应html文件中的变量名,value 为传入的值
views.py:
def func(request):
return render(request, "index.html", {'current_user': "bob"})
index.html:
<body>
<div>{{current_user}}</div>
</body>
最后生成的字符串
<body>
<div>bob</div>
</body>
循环
For循环
views.py:
def func(request):
return render(request, "index.html", {'current_user': "bob", 'user_list': ['bob','jack']})
index.html:
<body>
<div>{{current_user}}</div>
<ul>
{% for row in user_list %}
{% if row == "bob" %}
<li>{{ row }}</li>
{% endif %}
{% endfor %}
</ul>
</body>
字典循环
views.py:
USER_DICT = {
'1': {'name': 'user1', 'age': '12', 'gender': 'M'},
'2': {'name': 'user2', 'age': '12', 'gender': 'M'},
'3': {'name': 'user3', 'age': '12', 'gender': 'M'},
'4': {'name': 'user4', 'age': '12', 'gender': 'M'},
}
def show_dict(request):
return render(request, 'dict.html', {'user_dict': USER_DICT})
index.html:
- .keys: 只显示 key(默认状态)
<body>
<ul>
{% for i in user_dict.keys %}
<li>{{ i }}</li>
{% endfor %}
</ul>
</body>
输出:
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
- .values: 只显示 value
<body>
<ul>
{% for i in user_dict.values %}
<li>{{ i }}</li>
{% endfor %}
</ul>
</body>
输出:
<li>{'name': 'user1', 'age': '12', 'gender': 'M'}</li>
<li>{'name': 'user2', 'age': '12', 'gender': 'M'}</li>
<li>{'name': 'user3', 'age': '12', 'gender': 'M'}</li>
<li>{'name': 'user4', 'age': '12', 'gender': 'M'}</li>
- .items: 同时显示 key 和 value
<body>
<ul>
{% for i in user_dict.items %}
<li>{{ i }}</li>
{% endfor %}
</ul>
</body>
输出:
<li>('1', {'name': 'user1', 'age': '12', 'gender': 'M'})</li>
<li>('2', {'name': 'user2', 'age': '12', 'gender': 'M'})</li>
<li>('3', {'name': 'user3', 'age': '12', 'gender': 'M'})</li>
<li>('4', {'name': 'user4', 'age': '12', 'gender': 'M'})</li>
或
<body>
<ul>
{% for k, v in user_dict.items %}
<li>{{ k }}:{{ v }}</li>
{% endfor %}
</ul>
</body>
输出:
<li>1:{'name': 'user1', 'age': '12', 'gender': 'M'}</li>
<li>2:{'name': 'user2', 'age': '12', 'gender': 'M'}</li>
<li>3:{'name': 'user3', 'age': '12', 'gender': 'M'}</li>
<li>4:{'name': 'user4', 'age': '12', 'gender': 'M'}</li>
示例:
通过 a 标签提交 get 请求
<ul>
{#/detail/?nid= 方式#}
{% for k, v in user_dict.items %}
<li><a target="_blank" href="/detail/?nid={{ k }}">{{ v.name }}</a></li>
{% endfor %}
</ul>
<li><a target="_blank" href="/detail/?nid=1">user1</a></li>
<li><a target="_blank" href="/detail/?nid=2">user2</a></li>
<li><a target="_blank" href="/detail/?nid=3">user3</a></li>
<li><a target="_blank" href="/detail/?nid=4">user4</a></li>
索引
模版语言中不使用'[]'进行索引,而是直接'.'
views.py:
def func(request):
return render(request, "index.html", {
'current_user': "bob",
'user_list': ['bob','jack'],
'user_dict': {'k1': 'v1', 'k2': 'v2'}})
index.html:
<body>
<div>{{current_user}}</div>
<a> {{ user_list.1 }} </a>
<a> {{ user_dict.k1 }} </a>
<a> {{ user_dict.k2 }} </a>
</body>
判断
条件
views.py:
def func(request):
return render(request, "index.html", {
'current_user': "bob",
"age": 18,
index.html:
<body>
<div>{{current_user}}</div>
{% if age %}
<a>有年龄</a>
{% if age >= 18 %}
<a>成年</a>
{% else %}
<a>未成年</a>
{% endif %}
{% else %}
<a>无年龄</a>
{% endif %}
</body>