Django学习笔记(五):model继承和模板语法基础

model继承

使用场景:当不同model出现很多重复的字段时,我们可以考虑给他们写一个合理的抽象类

使用方法:

class Humen(models.Model):
    name = moedls.charField(
        max_length=20,
        verbose_name='人名'
    )
    age = models.IntergeField(
        verbose_name='年纪'
    )
    sex = models.CharField(
        max_length = 6
        verbose_name='性别'
    )
    class Meta:
        #允许被继承
        abstract = True

class Stu(Humen):
    score = models.IntegerField(
        verbose_name='成绩'
    )
class Teacher(Humen):
    salary = models.IntegerField(
    verbose_name='工资'
    )

 模板语法

(1)点语法

通过变量访问属性或方法

<ul>
    {%for i in teachers%}
        #{{i.name}}是在访问属性
        <li>{{i.name}}老师的工资是{{i.salary}}美金</li>
        #{{i.get_base_msg}}访问方法 不能传参数
        <p>{{i.get_base_msg}}</p>
        #{%empty%} 在数据为空的时候 显示出来 不为空 就不显示
        {%empty%}
        <h1>数据为空</h1>
    {%endfor%}
</ul>

(2)下标访问数组内的元素

{{ teachers.0.get_base_msg}}

(3)if 条件判断

格式:    {% if  表达式 %}
            语句
    {% endif  %}

    {%  if 表达式 %}
             语句
    {% else  %}
             语句
    {% endif %}
    {% if 表达式 %}
                      语句    
     {% elif 表达式 %}
                      语句
    {% endif %}

使用实例(注意等号两边的空格)

           {%if i.id == 2%}
                <li >{{i.name}}老师的工资是保密</li>
            {%else%}
                <li>{{i.name}}老师的工资是{{i.salary}}美金</li>
            {%endif%}

(4)乘除

    语法格式:{% widthratio 数  分母  分子  %}

    {%for i in teachers%}
        {%widthratio i.age 4 3%}
    {%endfor%}

(5)整除

​ 语法格式:{% if 你的数字|divisibleby:要整除几 %}

​ 使用实例

        {%for i in teachers%}
            {%if i.id|divisibleby:2%}
                <li>{{i.get_base_msg}}</li>
            {%else%}
                <li style="color: green;">{{i.get_base_msg}}</li>
            {%endif%}
        {%endfor%}

(6)注释

​ 单行 不可见 {#你想注释的内容#}

​ 多行不可见

{%comment%}
    你的一大堆注释
{%endcomment%}

(7)获取循环次数

{{ forloop.counter }} 表示当前是第几次循环,从1数数

{{forloop.counter0}}表示当前是第几次循环,从0数数

{{ forloop.revcounter}}表示当前是第几次循环,倒着数数,到1停

{{forloop.revcounter0}}表示当前第几次循环,倒着数,到0停

{{ forloop.first }} 是否是第一个 布尔值

{{ forloop.last }} 是否是最后一个布尔值

(8)判断是否等于

{%ifequal teachers.1.id 2%}
    等于
{%else%}
    不等于
{%endifequal%}

(9)操作

add {{ 变量 | add : 5 }}

没有减法过滤器,但是加法里可以加负数
        {{ 变量 | add : -5}}

lower 将字母转小写
        {{ 变量|lower }}
upper 将字母转大写

传参

{{ student | join;'='}}

默认值

{{ var | default value }}

如果变量没有被提供或者为False,空,会使用默认值

指定格式转换日期为字符串

{{ detevar | date:'y-m-d' }}

渲染成html

{{code | safe }}

跨站请求伪造

{% csrf_token %}

猜你喜欢

转载自blog.csdn.net/xiaohuoche175/article/details/81264045