Django测试开发-9-templates模板标签
一、Django模板标签之if,for,ifnotequal和ifequal
1.if模板
{% if condition1 %} ... display 1 {% elif condition12 %} ... display 2
{% else %}
... display 3
{% endif %} --------------------------------------------------- {% if a == 10 %} <h1>a10 == {{ a }}</h1> {% elif a == 20 %} <h1>a20 == {{ a }}</h1> {% endif %}
2.for模板
{% for foo in lsit %} <li>foo == {{ foo }}</li> {% endfor %} ------------------------------------------------------ {% for foo in c %} <h1>foo == {{ foo }}</h1> {% endfor %}
3.ifnotequal和ifequal
{% ifequal a b %} <h1>a与b相等</h1> {% else %} <h1>a与b不相等</h1> {% endifequal %} {% ifnotequal a b %} <h6>a与b不相等</h6> {% else %} <h6>a与b相等</h6> {% endifnotequal %}
结果如图:
二、Django模板标签之include,extends
1.include标签
include标签可以将html文件进行拆分,使得html文件能够复用。
如一个网站,头部和底部一般都是公用的,只有中间部分是不同的,可以将公共的top和底部抽取出来,单独做成一个html,使用时,使用include标签进行引入即可。
top.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <section>顶部导航</section> <h1>顶部内容</h1> <hr> </body> </html>
应用:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Templates</title> </head> <body> {% include 'top.html'%} </body> </html>
结果
2.extends
{% block content %} {% endblock content %}
可以在母模板中添加多个块标签,每个块标签取不同的名称
子模板可通过extends标签继承母模板,对于母模板中的block块,可以重写,也可以不重写
继承
{% extends "father.html" %}
具体例子:
father.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>父页面</title> </head> <body> <h1>博客园</h1> <h1>首页</h1> {% block changepage %} <p>我是变化之前的页面元素</p> {% endblock %} {% block notchangepage %} <p>子类不重写父类元素</p> {% endblock %} <h2>哈哈哈</h2> <h2>啦啦啦</h2> </body> </html>
son.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>子页面</title> </head> <body> <h1>我是子页面</h1> {% extends "father.html" %} {% block changepage %} <p>我是变化之后的元素</p> {% endblock %} </body> </html>
urls.py中添加方法:
def extend(request):
return render(request,"son.html")
view.py
url(r"^extend",views.extend)
浏览器访问:http://127.0.0.1:8000/vote/extend
当有些人一出生就有的东西,我们要为之奋斗几十年才拥有。但有一样东西,你一辈子都不会有,那就是我们曾经一无所有。