zoukankan      html  css  js  c++  java
  • DAY75-Django框架(六)

    一、模板层之变量

    在模板中变量的使用:

    ​ {{ 变量名 }}

    from django.shortcuts import render
    # Create your views here.
    def test(request):
        # 字符串
        str = 'abc'
        # 数值
        number = 123
        # 字典
        dic = {'name': 'xcq', 'age': 18}
        # 列表
        lis = [1, 2, 3, 4]
        # 元组
        tu = (5, 6, 7, 8)
        # 字典&列表
        dic_list = ['a', 1, {'zxc': 'asd'}]
    
        # 函数
        def test1():
            return 1
    	#类
        class Student():
            def __init__(self, name, age):
                self.name = name
                self.age = age
    
            def study(self):
                return '学习'
    
            @classmethod
            def eat(cls):
                return 'cls'
        #对象
        xcq = Student('xcq',18)
        return render(request, 'test.html', locals())
    
    变量
    {#字符串#}
    	<p>字符串:{{ str }}</p>
    {#数值#}
    	<p>数值:{{ number }}</p>
    {#字典#}
    	<p>字典:{{ dic }}</p>
    {#列表#}
    <p>列表:{{ lis }}</p>
    {#元组#}
    	<p>元组:{{ tu }}</p>
    {#字典&列表#}
    	<p>字典&列表:{{ dic_list }}</p>
    {#类#}
    	<p>类:{{ Student }}</p>
    {#函数#}
    	<p>函数:{{ test1 }}</p>
    
    深度取值
    {#列表取值#}
    	<p>列表取值:{{ lis.1 }}</p>
    {#字典取值#}
    	<p>字典取值:{{ dic.name }}</p>
    {#对象的数据属性#}
    	<p>对象的数据属性:{{ xcq.name }}</p>
    {#对象的函数属性#}
    	<p>对象的函数属性:{{ xcq.study}}</p>
    {#类的函数属性#}
    	<p>类的函数属性:{{ xcq.eat}}</p>
    方法的使用
    	<p>方法的使用:{{ str.upper}}</p>
    

    二、模板层之过滤器

    语法

    ​ {{obj|filter__name:param}} 变量|过滤器名称:变量

    常用过滤器

    -length
    	作用:统计变量的长度,没有第二参数
    	语法:{{ 变量|length }}
    	
    -default
    	作用:变量是false或者为空,使用默认值。否则,使用变量的值
    	语法:{{ 变量|default:'默认值' }}
    	
    -slice
    	作用:切片,顾首不顾尾
    	语法:{{ 变量|slice:'起点:终点:步长(默认为1,可省略)' }}
    	
    -date
    	作用:如果变量=datetime.datetime.now(),转化时间格式
    	语法:{{ 变量|date:"Y-m-d"(时间格式) }}
    	
    -filesizeformat
    	作用:将值格式化为一个 “人类可读的” 文件尺寸,默认单位是B。比如{{ 1024|filesizeformat }}  ===》 1KB
    	语法:{{ 变量|filesizeformat}}
    	
    -truncatechars
    	作用:将字符串以参数值截断制定的长度。截断的字符串的最后三位将以‘...’替换。
    	语法:{{ 变量|truncatechars:'截断的字符数' }}
    
    -truncatewords
    	作用:将段落以参数值截断制定的长度。截断的段落的最后三位将以‘...’替换。
    	语法:{{ 变量|truncatewords:'截断的字符数' }}
    
    -safe
    	作用:告诉模板吧,变量里的HTML标签和JS语法不要被转义,是安全的,可以使用的。
    	语法:{{ 变量|safe }}
    
    

    三、模板层之标签

    语法

    ​ {% 标签 %}

    常用标签

    ​ for标签

    语法:	
    	{% for person in person_list %}
            {{forloop}}
    	{% empty %}
    
    	{% endfor %}
    作用:
    	empty: 当被循环的为空,执行之后的操作
    	forloop:
    		 forloop.counter 当前循环的索引值(从1开始)
             forloop.counter0 当前循环的索引值(从0开始)
             forloop.revcounter 当前循环的倒序索引值(由1结束)
             forloop.revcounter0 当前循环的倒序索引值(由0结束)
             forloop.first       当前循环是不是第一次循环(布尔值)
             forloop.last        当前循环是不是最后一次循环(布尔值)
             forloop.parentloop  本层循环的外层循环
    

    if 标签

    语法:
    	{% if 条件 %}
    		内容
    	{% elif 条件 %}
    		内容
    	{% else %}
    		内容
    	{% endif %}
    

    with标签

    语法:
    	{% with 变量名 as 别名 %}
    	
    	
    	{% endwith %}
    作用:
    	对于一些过长的变量,可以用with设置别名,在endwith之前都可以使用别名
    

    注:标签不能用在for和if里

    四、自定义标签和过滤器

    #1 先app是不是已经在setting中注册
    
    #2 在app下创建一个templatetags(****名字不能变***)的文件夹(模块)
    
    #3 在模块下创建一个py文件,名字随意:mytag.py
    
    #4 第一步,导入template
    	from django.template import Library
        
      #第二步,定义一个叫register的变量=template.Library()
    	register = Library()
        
    #5 自定义标签与过滤器
    	#自定义过滤器
    	@register.filter(name='yyy')#装饰一下(可以指定别名)
        def str_add(str1, str2): 
            #一定要有返回值
            return str1 + str2
        
    	#自定义标签
    	@register.simple_tag()
        def add_nb(value):
            return value+'nb'
        
    #6 在模板里:(新定定义的标签,过滤器,都要重启程序)
    
    #导入自定义的py文件
    {% load mytag %}
    
    #使用自定义过滤器
    {{'lqz'|str_add:'nb'}}
    
    #使用自定义标签
    {% add_nb 'lqz' %}
    
  • 相关阅读:
    June 1. 2018 Week 22nd Friday
    【Android开发】【布局】几个常用布局构成的简单demo
    【Android开发】【布局】各种TabLayout样式
    【Android开发】【数据库】Realm For Android
    【Android开发】jarsigner重新打包apk
    【Android开发】Coding + git命令行基本使用
    【MarkDown】使用
    【Android Studio】Gradle统一管理版本号引用配置
    【Android开发】EasyPermissions 请求权限
    【Android开发】Android6.0请求权限方式
  • 原文地址:https://www.cnblogs.com/xvchengqi/p/9935912.html
Copyright © 2011-2022 走看看