【1023 | Day 51】模板传值/过滤器/标签/模板继承/模板导入

1. 模板传值

  • 传函数名的时候 会自动加括号调用函数 将函数的返回值展示在html页面上
  • django模板语法不支持函数传参
  • django模板语法在获取容器类型内部元素的值的时候 统一只采用 句点符(.)
  • 传函数,函数若没有返回值,则网页会显示None

2. 过滤器(|)

    #(前端代码并不一定非要在前端写  你也可以在后端写好 传递给前端页面)
    #前后端取消转义
        #前端 
            |safe
        #后端
            from django.utils.safestring import mark_safe
            sss2 = "<a href='http://www.xiaohuar.com'>下午上课 需要激情</a>"
            res = mark_safe(sss2)
        """
        #模板语法的符号就两种
            {{}}  变量相关
            {%%}  逻辑相关

3. 标签

标签:

  • if判断
  • for循环

4. 自定义过滤器、标签

步骤:

  • 在应用名下面新建一个templatetags文件夹(必须叫这个名字)

  • 在改文件夹下 新建一个任意名称的py文件

  • 在该py文件内 固定先写两行代码

            from django.template import Library
            register = Library()
    

自定义的过滤器VS自定义的标签:

@register.filter(name='myplus')
     def index(a,b):
        return a + b
@register.simple_tag(name='mysm')
     def login(a,b,c,d):
        return '%s/%s/%s/%s'%(a,b,c,d)

区别

标签不能再if中使用
{% if 0|myplus:123 %}可以用
有值
{% endif %} 

5. 模板继承

#事先需要再模板中 通过block划定区域
        
        {% block 区域名字 %}

        {% endblock %}
#子板中如何使用
        {% extends '模板的名字'%}
        
        {% block 区域名字 %}
            <h1>登录页面</h1>
        {% endblock %}
                
#一个页面上 block块越多 页面的扩展性越高


#通常情况下 都应该有三片区域
        {% block css %}

        {% endblock %}
        
        {% block content %}

        {% endblock %}
        
        {% block js %}

        {% endblock %}

#子板中还可以通过
    {{ block.super }}  来继续使用母版的内容

6. 模板导入

  • 当你写了一个特别好看的form表单
  • 你想再多个页面上都使用这个form表单
  • 你就可以将你写的form表单当作模块的形式导入
  • 导入过来之后 就可以直接展示
    {% include 'good_page.html' %}
posted @ 2019-10-23 19:01  fxyadela  阅读(132)  评论(0编辑  收藏  举报