码迷,mamicode.com
首页 > 其他好文 > 详细

DAY75-Django框架(六)

时间:2018-11-09 17:14:32      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:lse   orm   rom   creat   返回值   导入   load   条件   obj   

一、模板层之变量

在模板中变量的使用:

? {{ 变量名 }}

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‘ %}

DAY75-Django框架(六)

标签:lse   orm   rom   creat   返回值   导入   load   条件   obj   

原文地址:https://www.cnblogs.com/xvchengqi/p/9935912.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!