Django笔记五---模板Templates

Django的模板(Templates)
1, 什么是模板
    要动态的给用户呈现的网页内容;
    其实是一个前后端结合的网页--Python和HTML结合到一起
2, 模板的设置
    在setting.py 中 TEMPLATES变量
    TEMPLATES = [
    {
        'BACKEND':'... ...',
        'DIRS':[.. ...]}
    ]
    1, BACKEND: 指定模板的搜索引擎,不用动
    2, DIRS:     指定模板所存放的目录(s)
        DIRS = ['index.temp','music.temp']    
        如果DIRS中为空,则Django会自动到每个应用中去搜索一个templates的目录来座位模板的管理目录;
        推荐:
            1,DIRS保持为空
            2,在每个应用中都创建一个templates目录;(保证应用已注册)
    3, APP_DIRS:
        True: 首先从DIRS中指定的目录中查找模板,如果没找到的话,再搜索templates目录
3, 模板的加载方式
    方法一, 使用loader模块 获取模板,并通过HttpResponse进行响应;
        from jdango.template import loader
        step1: 通过loader 加载模板
                t = loader.get_template('模板名称.html')
        step2: 通过t对象将模板渲染成字符串
                html = t.render()
        step3: 通过HttpResponse 将html响应给客户端
                return HttpResponse(html)
                
    方法二: 使用render 直接加载模板,并返回(推荐)
        from django.shortcuts import render
        return render(request,"模板名称",[字典传参,可省略])
4, 模板的语法:
    1,变量:
        1, 作用:允许将后端的数据传递给模板,在模板中可以根据变量的值进行显示;
        2, 在Django中允许传递给模板做变量的数据类型:
            数字,字符串,列表,元组,字典,函数,对象
        3, 变量的语法
            1、 loader 方式
                需要使用字典传递;
                dic = {
                    'var1' = 'value1',
                    'var2' = 'value2',
                }
                eg:
                t = loader.get_template('xxx.html')
                html = t.render(dic)
                return HttpResponse(html)
                在模板中显示变量: {{变量名}}
                注意:
                    列表,元祖,字典 如果要取其中的某个数据,变量名调用的时候需要使用"."
                    lst[0]:{{list.0}}
                    tup[0]:{{tup.0}}
                    dic.B:{{dic.B}}
            2、 使用render方式
                dic = {
                        'var1' = 'value1',
                        'var2' = 'value2',
                    }
                return render(request,"模板名称",dic)
                
            注意: 如果传递的变量都是局部变量,可以以locals() 代替字典传参
            练习:    
                访问: http://localhost:8000/news/05_exer
                模板中显示以下内容:
                    书名:《the end of history》
                    作者: Trump
                    出版社: Reader
                    出版时间: 2017-1-17
                内容可变,以变量方式传入
                    
    2, 标签
        定义: 将服务器端的一些功能嵌入到模板中;
        语法:
            {% 标签内容 %} 
            部分标签拥有结束标签{% end标签内容 %}
            eg:
            {% comment %} xxx {% endcomment%}
            <ul>
            {% for athlete in athlete list %}
                <li>{{athlete.name}}</li>
            {% endfor %}
            </ul>
         
        常用标签:
            1, for 
                {%for 变量 in 列表|元祖|字典 %}
                {% endfor %}
                for内部允许使用for提供的内置变量 - forloop
                1, forloop.counter:    return int
                    记录当前循环的次数,从1开始
                2, forloop.first    返回值为布尔类型
                    是否是第一次循环(第一项)
                3, forloop.last:    返回值为布尔类型
                    是否是最后一次循环(最后一项)
            2, if 结构
                1,
                    {% if 条件 %}
                        statement1
                    {% endif %}
                    
                    条件中允许使用比较运算符(>,<,>=...)和逻辑运算符(not,and,or)
                    注意:and 和 or不能同时出现
                2,
                    {% if 条件 %}
                        statement1
                    {% else %}
                        statement2
                    {% endif %}
                3,
                    {% if 条件1 %}
                        statement1
                    {% elif 条件2 %}
                        statment2
                    {% elif 条件3 %}
                        statment3
                    {% else %}
                        other statment
                    {% endif %}
                    
    3, 过滤器
        1, 作用
            过滤数据
            在显示变量的数据之前,允许对数据进行筛选或者改变;
        2, 语法:
            {{变量|过滤器:参数}}
            {{value|add:"2"}}    value输出之前对其进行二次处理,如果value=4,则输出的是6
        3, 简单的过滤器
            1, {{value|upper}}
                将value变为大写字符
            2, {{value|lower}}
                将value变为小写字符
            3, {{value|add:num}}
                将num累加到value之后
            4, {{value|floatformat:n}}
                将value四舍五入到n为小数
            5, {{value|truncatechars:n}}
                将字符串截取到n位(包含...)
                
        作业: 
            1,创建一个项目.        
            2, 创建应用 index
            3, 配置 路由配置模块
            4, 将login.html移植到其中,以模板的方式呈现;
            
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值