Django之模版层

模版语法传值

在html中要记住两种特殊符号:{{ }} 和 {% %}

        与变量相关时:{{ }}

        与逻辑相关时:{% %}


1.传值

        有两种方式一种指名道姓的传参数不会浪费资源还有一种用关键字把整个局部名称空间中的名字传给页面

方法一:

return render(request,'user.heml',{'name':name})
# 针对性的传值

方式二:关键字locals()

return render(request,'user.html',locals())
# 把所有的局部名称变量都传给了网页

2.传值范围

        在模版层传基本数据类型的时候直接传递使用,如果传的是函数名则会自动加括号执行并将返回值展示到页面(只支持没有参数的函数),类名的传递也会自动加括号产生对象并展示到页面上

\bullet  模版语法会判断每个名字是否可以调用,如果可以则直接调用

\bullet  在django的模版语法在操作容器类型的时候只允许使用句点符

模版语法过滤器

        过滤器的作用是在变量输出时,对输出的值做进一步的处理,如同python的内置函数用法 常用过滤器:

# length:
    

统计长度:{{ s|length }}

# add:

加法运算:{{ i|add:123 }}、加法运算:{{ s|add:'heiheihei' }}

# date:

日期转换:{{ s|date:'Y-m-d H:i:s' }}

# file_size:

文件大小:{{ file_size|filesizeformat }}

# slice:

数据切片:{{ l|slice:'0:10' }}

# truncatechars:

字符截取(三个点算一个):{{ s1|truncatechars:6 }}

# truncatewords:

单词截取(空格):{{ s1|truncatewords:6 }}

ps:html页面上的数据也可以后端处理好后直接传入过来

模版语法标签

        模版语法标签可以理解为就是在html文件中写一些流程控制的代码操作需要用到逻辑符号:{% %},用法和python中的流程控制一样只多了个符号和结束语句

1.if判断标签

{% if 条件 %}
    条件成立执行代码
{% elif 条件1 %}
    条件成立执行代码
{% else %}
    上诉条件都不成立执行的代码
{% endif %} # 得加上结束符

2.for循环标签

{% for i in num %}
    for循环代码可以和if联用
{% endfor %}

ps:标签内的条件或数据一般都是模版语法传过来的数据

自定义标签与过滤器

        有时候我们也可以自己才定义过滤器制定一些自己想要的功能,django中就可以自定义标签,但是必须得先做几个准备步骤:

        1.在应用下创建一个名为templatetags文件夹

        2.在该文件夹内创建任意名称py文件

        3.在该py文件内编写自定义相关代码

# 固定语句
from django.template import Library
register = Libeary() 
# 自定义过滤器
@register.filter(name='自定名字')
# 自定义标签函数
@register.simple_tag(name='自定名字')
# 自定义inclusion_tag
@register.inclusion_tag(name='自定名字')

ps:定义好后的标签用法和上面的自带的用法一样

模版的继承

        当一个页面中有一部分内容需要经常换而其它的不需要动的时候可以通过继承替换这一部分内容这拥有公共页面的就称之为父版,而继承父版的页面就称为子版,同一个父版可以被多个子版继承

继承需要用到关键字:extends
{% extends 'html文件名'%} # 继承模板 写在文件的第一行
    {% block 名字 %} # 重写父模版中的内容块
        模板内容
    {% endblock %} # 结束符号

你可能感兴趣的:(Djangp,django,python,后端)