第57天:django学习(六)

模版之过滤器

        语法:

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

default

        如果一个变量是false或者为空,使用给定的默认值。否则,使用变量的值。例如:

{{ value|default:"nothing"}}

length

        返回值的长度。它对字符串和列表都起作用。例如:

{{ value|length }}

filesizeformat

        将值格式化为一个 “人类可读的” 文件尺寸 (例如 '13 KB', '4.1 MB', '102 bytes', 等等)。例如:

{{ value|filesizeformat }}

date

        如果 value=datetime.datetime.now()

{{ value|date:"Y-m-d"}}

slice

        如果 value=”hello world”

{{ value|slice:"2:-1"}}

truncatechars

        如果字符串字符多于指定的字符数量,那么会被截断。截断的字符串将以可翻译的省略号序列(“…”)结尾。

{{ value|slice:"2:-1"}}

safe

value="点击"
{{ value|safe}}  

模版之标签

        标签看起来像是这样的: {% tag %},标签比变量更加复杂:一些在输出中创建文本,一些通过循环或逻辑来控制流程,一些加载其后的变量将使用到的额外信息到模版中。一些标签需要开始和结束标签 (例如{% tag %} ...标签 内容 ... {% endtag %})

for标签

        遍历每一个元素

{% for person in person_list %}
    

{{ person.name }}

{% endfor %}

        遍历一个字典:

{% for key,val in dic.items %}
    

{{ key }}:{{ val }}

{% endfor %} ​ {% for foo in d.keys %}    

{{ foo }}

{% endfor %} ​ {% for foo in d.values %}    

{{ foo }}

{% endfor %} ​ {% for foo in d.items %}    

{{ foo }}

{% endfor %}

for...empty

{% for person in person_list %}
    

{{ person.name }}

​ {% empty %}    

sorry,no person here

{% endfor %}

if 标签

        会对一个变量求值,如果它的值是True(存在、不为空、且不是boolean类型的false值),对应的内容块会输出。

{% if num > 100 or num < 0 %}
    

无效

{% elif num > 80 and num < 100 %}    

优秀

{% else %}    

凑活吧

{% endif %}
  • if语句支持 and 、or、==、>、<、!=、<=、>=、in、not in、is、is not判断。

with

{% with d.hobby.3.info as nb  %}
    

{{ nb }}

   

{{ d.hobby.3.info }}

{% endwith %}
  • 在with语法内就可以通过as后面的别名快速的使用到前面非常复杂获取数据的方式

csrf_token

{% csrf_token%}
  • 这个标签用于跨站请求伪造保护

模版导入入和继承     

        写一个被导入的模板adv.html

   
       
           

Panel title

       
       
          Panel content        
   
   
       
           

Panel title

       
       
          Panel content        
   
   
       
           

Panel title

       
       
          Panel content        
   

        写一个模板来导入base.html,用来导入adv.html




    
    Title
    
    
    
    


   
       
          {% include 'adv.html' %}        
       
          {% block conn %}          

你好

          {% endblock %}        
   

        写一个模板index.html,来继承base.html

{% extends 'base.html' %}
​
{% block conn %}
    {{ block.super }}
​
我是主页
​
{% endblock conn%}

常见的查询方法

查询方法 描述
all() 查询所有数据
filter() 带有过滤条件的查询
get() 直接拿数据对象 但是条件不存在直接报错
first() 拿queryset里面第一个元素
distinct() 去重
order_by 排序
reverse() 反转
count() 统计个数
exclude 排除
exist 判断是否存在

 

基于双下滑线的查询

        

查询参数 描述
age__gt= 大于
age__lt= 小于
age__gte= 大于等于
age__lte= 小于等于
age__in=[数字1,数字2,数字3] 成员运算
age__range=[数字1,数字2] 范围运算
字段名__contains= 包含
字段名__startswith= 以……开头
字段名__endswith= 以……结尾
日期字段__day= 查天数
日期字段__month= 查月份
日期字段__year= 查年份

你可能感兴趣的:(学习)