for 循环的特殊用法
forloop 的用法
说明: forloop
是 for
循环中固有的一个变量对象,该对象中,包含有如 counter
/counter0
等属性,具体说明如下:
语法 | 说明 |
---|---|
forloop.counter | 索引从1开始算,该变量得到的是此时循环变量的下标 |
forloop.counter0 | 索引从0开始算,该变量得到的是此时循环变量的下标 |
forloop.revcounter | 索引从最大长度到1,该变量类似于forloop.counter的逆序 |
forloop.revcounter0 | 索引从最大长度-1到0,该变量类似于forloop.counter0的逆序 |
forloop.first | 当遍历的元素为第一项时为真,该变量是一个bool值 |
forloop.last | 当遍历的元素为最后一项时为真,该变量是一个bool值 |
forloop.parentloop | 用在嵌套的for循环中,获取上一层for循环的forloop,该变量得到的是上一层的forloop对象 |
所以在 for
循环体中,不要自定义变量 forloop
for empty 用法
功能: 当列表为空时使用
<ul>
{% for item in items %}
<li>{{ item }}</li>
{% empty %}
<li>无数据</li>
{% endfor %}
</ul>
if 条件判断
在 if
条件判断中,可以支持如下的判断场景,如: and
/ or
/ not
/ in
/ not in
也支持大小判断,如: >
/ >=
/ <
/ <=
/ ==
/ !=
获取页面内的内容
如获取页面中的 当前用户
/ 当前网址
/ 当前GET参数
首先是需要在工程的 settings.py
中添加如下的装饰器
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR + "/templates",],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request', # 这里是template页面中能否获取上述信息的关键
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
然后就是在模版页面中获取上述参数的方法
获取方法 | 获取结果 |
---|---|
{{ request.user }} | 当前用户,匿名的时候为: AnonymousUser |
{{ request.path }} | 当前网址,去除了hostname和port,且不包括参数 |
{{ request.GET.urlencode }} | 当前GET参数 |
所以如果要想拼接出当前浏览器的url内容的话,可以使用如下方法: {{ request.path }}/?{{ request.GET.urlencode }}