Django模板(2)

for:

<ul>

{% for user in user_list %}

<li>{{ user.name }}</li>

{% endfor %}

</ul>

for循环可用的一些参数:

forloop.counter 当前循环的索引值(从1开始)

forloop.counter0 当前循环的索引值(从0开始)

forloop.revcounter 当前循环的倒序索引值(到1结束)

forloop.revcounter0 当前循环的倒序索引值(到0结束)

forloop.first 当前循环是不是第一次循环(布尔值)

forloop.last 当前循环是不是最后一次循环(布尔值)

forloop.parentloop 本层循环的外层循环

for … empty:

<ul>

{% for user in user_list %}

<li>{{ user.name }}</li>

{% empty %}

<li>空空如也</li>

{% endfor %}

</ul>

if,elif和else:

{% if user_list %}

用户人数:{{ user_list|length }}

{% elif black_list %}

黑名单数:{{ black_list|length }}

{% else %}

没有用户

{% endif %}

当然也可以只有if和else:

{% if user_list|length > 5 %}

七座豪华SUV
{
% else %}

黄包车

{% endif %}

if语句支持 and 、or、==、>、<、!=、<=、>=、in、not in、is、is not判断

 

with:

 

定义一个中间变量

{% with total=business.employees.count %}

{{ total }} employee{{ total|pluralize }}

{% endwith %}

 

csrf_token:这个标签用于跨站请求伪造保护。在页面的form表单里面写上{% csrf_token %}

 

注释:{#…#}

 

 

注意事项:

 

1. Django的模板语言不支持连续判断,即不支持以下写法:

{% if a > b > c %}

{% endif %}

2. Django的模板语言中属性的优先级大于方法

def xx(request):

d = {“a”: 1, “b”: 2, “c”: 3, “items”: “100”}

return render(request, “xx.html”, {“data”: d})

 

我们在使用render方法渲染一个页面的时候,传的字典d有一个key是items并且还有默认的 d.items() 方法,此时在模板语言中:

{{ data.items }} 默认会取d的items key的值。

 

继承母板: {% extends ‘layouts.html’ %}

 

块(block):
通过在母板中使用{% block  xxx %}来定义”块”。

 

在子页面中通过定义母板中的block名来对应替换母板中相应的内容。

{% block page-main %}

<p>世情薄</p>

<p>人情恶</p>

<p>雨送黄昏花易落</p>

{% endblock %}

 

组件:

 

可以将常用的页面内容如导航条,页尾信息等组件保存在单独的文件中,然后在需要使用的地方按如下语法导入即可。

{% include ‘navbar.html’ %}

静态文件相关

{% load static %}
img src=”{% static “images/hi.jpg” %}” alt=”Hi!” />

 

引用JS文件时使用:

{% load static %}

<script src=”{% static “mytest.js” %}”></script>

 

某个文件多处被用到可以存为一个变量


{% load static %} {% static “images/hi.jpg” as myphoto %} <img src=”{{ myphoto }}”></img>

 

使用get_static_prefix:

 

{% load static %}

<img src=”{% get_static_prefix %}images/hi.jpg” alt=”Hi!” />

 

或者

{% load static %}

{% get_static_prefix as STATIC_PREFIX %}

<img src=”{{ STATIC_PREFIX }}images/hi.jpg” alt=”Hi!” />

<img src=”{{ STATIC_PREFIX }}images/hi2.jpg” alt=”Hello!” />

自定义simpletag:

和自定义filter类似,只不过接收更灵活的参数。

 

 

定义注册simple tag

 

@register.simple_tag(name=”plus”)

def plus(a, b, c):

return “{} + {} + {}”.format(a, b, c)

 

使用自定义simple tag

{% load app01_demo %}

 

{# simple tag #}

{% plus “1” “2” “abc” %}

本文来自投稿,不代表微擎百科立场,如若转载,请注明出处:https://www.w7.wiki/develop/4396.html

发表评论

登录后才能评论