好记性不如烂笔头之 Django 框架if-else标签的使用
一下是本人学习Django框架的一些知识点,一来方便自己查看,二来可以为人提供参考。
模板MyTemplate.py文件内容:
from django.http import HttpResponse
from django import template
#if-else标签的简单应用
def ifelseTemplate(request):
current_date = datetime.datetime.now()
field1 = 'hello'
field2 = 'world'
field3 = 'abc'
today_is_weekend = 0
# return render_to_response('x.html',{'current_date':current_date,'field1':field1,'field2':field2,'field3':field3})
return render_to_response('t.html', locals())
'''
if-else的真假判断
1.空列表([])
2.空元组(())
3.空字典({})
4、空字符串('')
5、零值
6、None
7、False
'''
# if-else 标签的多值条件与嵌套
# and or not
def multCondition(request):
current_date = datetime.datetime.now()
field1 = 'hello'
field2 = 'world'
field3 = 'abc'
today_is_weekend = 0
return render_to_response('t.html', locals())
# for标签
'''
for X in Y:
{% for%}
{% endfor %}
for标签不支持break和continue
内置变量forloop.counter{从1开始},forloop.counter0 (从0开始)
forloop.revcounter 和forloop.revcounter0
表示循环中剩余项的值
forloop.first(第一次执行for为true)和forloop.last(最后一次执行for,为true)
'''
def forlist(request):
persons = [{'name':'Bill','age':30},{'name':'Mike','age':40},{'name':'Mary','age':50}]
return render_to_response('for.html',locals())
# ifequal和ifnotequal(equal模板)
# 这两个标签只能使用字符串、整数和浮点数,不能使用字典、列表和布尔
def equalVar(request):
user = 'geek'
currentUser = 'geekori'
return render_to_response('equal.html',locals())
# 单行注释和多行注释
'''
{# 1、 This is comment 单行注释,跨行是会失败的,例如下面的代码 #}
{# abc
xyz
#}
{% comment 这种注释是不会发送到客户端的,但是很多时候,我们并不希望将注释发送过去%}
多行注释
{% endcomment %}
<!--Html的注释是会发送到客户端的-->
所以我们使用Django模板的注释
'''
# 过滤器
'''
过滤器:对模板变量的二次加工
1、lower:将模板变量的值都变成小写
2、upper:将模板的值都变成大写
3、trucatewords:截取前n个单词
4、addslashes:在任何的反斜杠、单引号或者双引号前面添加反斜杠
5、date:指定的格式化字符串参数格式化date或者datetme对象
6、length:用于返回模板变量的长度
'''
def filter(request):
mytime = datetime.datetime.now()
name = "Bill"
productName = 'iPhone Android 黑莓 宝马'
return render_to_response('filter.html',locals())
# 引用模板(include标签)
def include(request):
main1 = "hello world"
main2 = "I love you"
main3 = "It's hot"
t1 = "这是第一个子模板"
t2 = "这是第二个子模板"
t3 = "这是第三个子模板"
return render_to_response('main.html', locals())
# 模板继承
'''
比include的使用更加优雅
'''
def sub1(request):
car_product = "特斯拉"
return render_to_response('sub1.html', locals())
def sub2(request):
mobile_product1 = "iPhone"
mobile_product2 = "黑莓"
return render_to_response('sub2.html', locals())
模板文件t.html内容
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% if today_is_weekend %}
<p>今天是周末,太好啦!</p>
{% elif field1 %}
<p>今天什么情况?</p>
{% else %}
<p>今天不是周末,要上班</p>
{% endif %}
It is now {{ current_date }}
{% if field1 and field2 %}
{% if field3 %}
{{ field3 }}
{% endif %}
<ul>
<li>{{ field1 }}</li>
<li>{{ field2 }}</li>
</ul>
{% elif field1 or field2 or field3 %}
<ul>
<li>{{ field1 }},{{ field2 }},{{ field3 }}</li>
</ul>
{% elif not field1 %}
<ul>
<li>{{ field2 }}</li>
<li>{{ field3 }}</li>
</ul>
{% endif %}
</body>
</html>
路径映射文件url.py为:
from django.conf.urls import url
from django.contrib import admin
from .views import First
from .views import ServerTime
from .views import Dynamicurl
from .views import MyTemplate
# 动态URL的使用
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^hh/',First.index),
url(r'^time/$',ServerTime.currentDateTime),
url(r'^$',ServerTime.currentDateTime),
url(r'^time1$',ServerTime.currentDateTime),
#url(r'^fun/1$',Dynamicurl.fun1),
#url(r'^fun/2$',Dynamicurl.fun2),
#url(r'^fun/3$',Dynamicurl.fun3),
# 映射变成正则表达式
url(r'^fun/(\d{1,3})/$',Dynamicurl.fun),
url(r'^simpleTemplate/$',MyTemplate.simpleTemplate),
url(r'^multContext/$',MyTemplate.multContext),
url(r'^loadTemplateFile/$',MyTemplate.loadTemplateFile),
url(r'^loadTemplateFile1/$',MyTemplate.loadTemplateFile1),
url(r'^loadTemplateFile2/$',MyTemplate.loadTemplateFile2),
url(r'^loadTemplateFile3/$',MyTemplate.loadTemplateFile3),
url(r'^ifelseTemplate/$',MyTemplate.ifelseTemplate),
url(r'^multCondition/$', MyTemplate.multCondition),
url(r'^forlist/$', MyTemplate.forlist),
url(r'^equalVar/$', MyTemplate.equalVar),
url(r'^filter/$', MyTemplate.filter),
url(r'^include/$', MyTemplate.include),
url(r'^sub1/$', MyTemplate.sub1),
url(r'^sub2/$', MyTemplate.sub2),
]
更多的Template的HTML文件代码可以参考项目源代码,如果有用、喜欢,请动动手指star一下啦!: