在Django页面显示后台内容,加模板标签,{% %}
1.例如if语句
{% if condition1 %} ... display 1 {% elif condition2 %} ... display 2 {% else %} ... display 3 {% endif %}
2.{{ mess }}输出后台内容
3.给标签增加一个 reversed 使得该列表被反向迭代:
{% for athlete in athlete_list reversed %} ... {% endfor %}
4.可以嵌套使用 {% for %} 标签:
{% for athlete in athlete_list %} <h1>{{ athlete.name }}</h1> <ul> {% for sport in athlete.sports_played %} <li>{{ sport }}</li> {% endfor %} </ul> {% endfor %}
5.模板过滤器,过滤器使用管道字符 |
过滤管道可以被* 套接* ,既是说,一个过滤器管道的输出又可以作为下一个管道的输入:
{{ my_list|first|upper }} 将第一个元素转换大写,lower小写
有些过滤器有参数。 过滤器的参数跟随冒号之后并且总是以双引号包含。 例如:
{{ bio|truncatewords:"30" }} 显示变量bio的前30个词
date : 按指定的格式字符串参数格式化 date 或者 datetime 对象,实例:
{{ pub_date|date:"F j, Y" }}
6.{% include %} 标签允许在模板中包含其它的模板的内容。
下面这个例子都包含了 nav.html 模板:
{% include "nav.html" %} 在一个页面包含另一个页面
7.模板继承,实现页面统一
HelloWorld/templates/base.html 文件代码:
<
!
DOCTYPE
html
>
<
html
>
<
head
>
<
meta
charset
=
"
utf-8
"
>
<
title
>
菜鸟教程(runoob.com)
</
title
>
</
head
>
<
body
>
<
h1
>
Hello World!
</
h1
>
<
p
>
菜鸟教程 Django 测试。
</
p
>
{% block mainbody %}
<
p
>
original
</
p
>
{% endblock %}
</
body
>
</
html
>
HelloWorld/templates/hello.html 文件代码:
{% extends "base.html" %} 继承base.html页面,大括号中的部分,括号外面还依次显示
{% block mainbody %}
<
p
>
继承了 base.html 文件
</
p
>
{% endblock %}
分页:
pages:当前页码
pageSize:每页显示的最大记录数
pg:一共多少页
后台:
def show(request,pageNo=1): #查询所有博客记录 #获取第几页,每页显示的最大记录数 #select * from tablename limit (pageno-1)*pagesize,pagesize pageSize = 4#一页有多少条记录 pg=Paginator(Blog.objects.all().order_by('-createTime'),pageSize)#导入模块,一共有多少页,是一个对象 pages=pg.page(pageNo)#获取当前页 return render(request,'manager/show.html',{'pg':pg,'pages':pages})
前台:
{% for i in pg.page_range %} <a href="/blogManager/show/{{ i }}">{{ i }}</a> {% endfor %}<br> <a href="/blogManager/show/1">首页</a> {% if pages.has_previous %} <a href="/blogManager/show/{{ pages.number | add:-1 }} ">上一页</a> {% endif %} {% if pages.has_next %} <a href="/blogManager/show/{{ pages.number | add:1}} ">下一页</a> {% endif %} <a href="/blogManager/show/{{ pg.num_pages }}">尾页</a><br>