Django 框架模板的使用

好记性不如烂笔头之 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一下啦!:

https://github.com/too-hoo/SecondDjango

猜你喜欢

转载自blog.csdn.net/ATOOHOO/article/details/88363929