Django小笔记-模板及Django高级扩展

定义模板
    变量
        视图传递给模板的数据
        要遵守标识符规则
        语法:{{var}}
        注意:若变量不存在,则插入的是空字符串
        在模板中使用点语法
                字典查询
                属性或者方法
                数字索引
        在模板中调用对象的方法
                注意:在模板里定义的函数不能传递self以外的参数

    标签
        语法:{% tag %}
        作用:在输出中创建文本
              控制逻辑和循环
        if标签
            格式 
                    {% if 表达式 %}
                        语句
                    {% endif %}
            if-else 格式   
                        {% if 表达式 %}
                            语句1
                        {% else %}
                            语句else
                        {% endif %}
            if-elif-else 格式 
                        {% if 表达式1 %}
                            语句1
                        {% elif 表达式2 %}
                            语句2
                        ...

                        {% else %}
                            语句else
                        {% endif %}
            实例{% if num %}
                    <h1>sunck  nice</h1>
                {% endif %}

        for标签
            格式1
               {% for 变量 in 列表 %}
                    语句
               {% endfor %}
            格式2
               {% for 变量 in 列表 %}
                    语句1
               {% empty %}  # 注意:列表为空或者列表不存在时执行语句2
                    语句2
               {% endfor %}
            格式3
               {{ forloop.counter }}    #表示当前是第几次循环
            实例<h1>学生列表</h1>
                <ul>
                    {% for stu in students %}
                        <li>
                            {{forloop.counter}}--{{stu.sname}}--{{stu.sgrade}}
                        </li>
                </ul>

        comment标签
            作用:相当于多行注释,被注释的内容不再执行
            格式 {% comment %}
                    多行注释
                 {% endcomment %}

        ifequal/ifnotequa标签
            作用 判断是否相等或者不相等
            格式{% ifequal 值1 值2 %}
                   语句1
                {% endifequal %}  # 如果值1等于值2,执行语句1,否则不执行语句1
            实例{% ifequal 'sunck' 'sunck' %}
                    <h1>sunck handsome</h1>
                {% endifequal %}

        include标签
            作用:加载模板并以标签内的参数渲染
            格式:{% include '模板目录' 参数1 参数2 %}

        url标签
            作用:反射解析(具体见下文“反向解析”)
            格式:{% url 'namespace: name' p1 p2 %}
            
        csrf_token标签
            作用:用于跨站请求伪造保护
            格式:{% csrf_token %}

        block, extends标签
            作用:用于模板的继承

        autoescape标签
            作用:用于HTML转义

    过滤器
        语法 {{ var|过滤器 }}
        作用:在变量被显示前修改它,只是加一个效果,对变量不会造成影响
        lower:全小写
        upper:全大写
        实例:<h1>{{str|upper}}</h1>  <!--过滤器(变成大全写)-->
        过滤器可以传递参数,参数用引号引起来
            join
                格式:列表|join:"#"
                实例:<h1>{{list|join:'#'}}</h1>返回good#nice#handsome
        如果一个变量没有被提供,或者值为false,空,可以使用默认值
            default
                格式: {{var|default:"没有"}}
                实例:<h1>{{text|default:"没有"}}</h1>    返回“没有”
        根据给定格式转换日期为字符串
            date
                格式: {{dateVal|date:'y-m-d'}}
        HTML转义
            escape
        加减乘除
            实例<h1>num = {{num|add:10}}</h1>   <!--加-->
                <h1>num = {{num|add:-10}}</h1>  <!--减-->
                <h1>num = {% numwidthratio num 1 5%}</h1><!--num/1*5-->   <!--乘-->
                <h1>num = {% num widthratio num 5 1%}</h1>  <!--除-->
        注释
            单行注释    语法{#注释内容 #}
            多行注释    语法{% comment %}
                            注释内容
                        {% endcomment %}

    反向解析
        当修改project/urls.py的正则,其他匹配的正则也要随之改变,当正则表达式很多的时候,这样就会很麻烦甚至会报错
        实例:../project/urls.py
              url(r"^", include('myApp.urls',namespace="app")) 
              ../myApp/urls.py
              url(r"^$",views.index),
              url(r'^good/(\d+)/$',views.good,name="good"),
              ../myApp/views.py
              def index(request):         
                student = Students.objects.get(pk=1)
                return render(request, 'myApp/index.html', {"stu": student,"num": 10,"str":"sunck good","list":["good","nice","handsome"]})
              def good(request,id):
                  return render(request,'myApp/good.html',{"num":id})
              ../templates/good.html
              <h1>good</h1>
              ../templates/index.html
              <a href="{% url 'app:good' 1 %}">链接</a> 

    模板继承
        作用:模板继承可以减少页面的重复定义,实现页面的重用
        block标签:在父模板中预留区域 ,子模板去填充
            语法:{% block 标签名 %}

                  {% endblock 标签名 %}
        extends标签:继承模板,需要写在模板文件的第一行
            语法 : {% extends '父模版路径myApp/base.html' %}
                    {% block main %}
                        内容
                    {% endblock 标签名 %}
        实例:templates/myApp/base.html(父模板)
                <!DOCTYPE html>
                <html lang="en">
                <head>
                    <meta charset="UTF-8">
                    <title>Title</title>

                    <style>
                        #header{
                            width: 100%;
                            height: 100px;
                            background-color: red;
                        }
                        #footer{
                            width: 100%;
                            height: 100px;
                            background-color: blue;
                        }
                    </style>

                </head>
                <body>
                    <div id="header">header</div>

                    <div id="main">
                        {% block main %}

                        {% endblock main %}
                        <hr/>
                        {% block main2 %}

                        {% endblock main2 %}
                    </div>

                    <div id="footer">footer</div>
                </body>
                </html>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值