坑爹的csdn把我在markdown里保存的没有写完的博客整没了,现在要重新写。
这部分的内容大家可以参照django的官方文档,上面写的很详细也很高端,这部分具体在django-document->The template layer->Built-in tags and filters,各位看官可以点击链接快速跳转。下面我要讲的只是django常用的一些,由于第一次接触python web方向的运算符与表达式,也期待跟大家一起学习。
if—else—endif
该语句主要执行判断,首先判断if—else之间的语句,如果为假则执行else—elseif之间语句,比较简单。下面代码中user对象包含一些属性但不包含level对象,因此判断会出错,其他为真,参考代码如下:
- blog/views.py的参考代码
from django.shortcuts import render_to_response
class Person(object):
def __init__(self,name,gender,age):
self.name = name
self.gender = gender
self.age = age
###Person类没有level属性
def index(req):
user = Person('hepeng','male',23)
return render_to_response('index1.html',{'title':'my page','user':user})
- /blog/templates/index1.html的参考代码
<body>
<h1>这个人是:{{user.name}}</h1>
<h1>他的性别是:{{user.gender}}</h1>
<h1>他的年龄是:
{%if user.age%}
{{user.age}}
{%else%}
没有找到
{%endif%}
</h1>
<h1>他的水平是:
{%if user.level%}
{{user.level}}
{%else%}
没有找到
{%endif%}
</h1>
</body>
运行截图
for—end for-1
for—endfor标签毫无疑问是为模板中的循环准备的。很多时候我们并不知道list有多少内容,这个时候就需要用到该标签。
这里我们编写一个list标签,标签里有一些内容,我们使用for标签将其取出。参考代码如下:/blog/views.py
from django.shortcuts import render_to_response
book_list = ['Pride and Prejudice ','Black Beauty','Oliver Twist','Whtering Heights']
def index(req):
return render_to_response('index1.html',{'title':'my page','list':book_list})
- /blog/templates/index1.html
<body>
{% for book in list %}
<li>{{book}}</li>
{% endfor %}
</body>
- 运行效果截图:
for—endfor-2
有时候我们需要将字典的key也找出来,这个时候就需要for标签的另外一种用法。
例如有一个user字典,其中有name,,sex,age等属性,我们需要将他们一一显示出来,下面是参考代码:
- blog/views.py
from django.shortcuts import render_to_response
def index(req):
user = {'name':'Franky','gender':'male','age':23,'level':'freshman'}
return render_to_response('index1.html',{'title':'my page','user':user})
- blog/templates.index1.html
<body>
{% for op,val in user.items %}
<li>{{op}}:{{val}}</li>
{% endfor %}
</body>
- 运行代码截图:
for-empty-endfor
这部分标签是for—endfor的扩充,下面是简单的代码应用:
<ul>
{% for athlete in athlete_list %}
<li>{{ athlete.name }}</li>
{% empty %}
<li>Sorry, no athletes in this list.</li>
{% endfor %}
</ul>