第57天:django学习(六)

模版之过滤器

语法:

html 复制代码
{{obj|filter__name:param}}  变量名字|过滤器名称:变量

default

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

html 复制代码
{{ value|default:"nothing"}}

length

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

html 复制代码
{{ value|length }}

filesizeformat

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

html 复制代码
{{ value|filesizeformat }}

date

如果 value=datetime.datetime.now()

html 复制代码
{{ value|date:"Y-m-d"}}

slice

如果 value="hello world"

html 复制代码
{{ value|slice:"2:-1"}}

truncatechars

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

html 复制代码
{{ value|slice:"2:-1"}}

safe

html 复制代码
value="<a href="">点击</a>"
html 复制代码
{{ value|safe}}  

模版之标签

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

for标签

遍历每一个元素

html 复制代码
{% for person in person_list %}
    <p>{{ person.name }}</p>
{% endfor %}

遍历一个字典:

html 复制代码
{% for key,val in dic.items %}
    <p>{{ key }}:{{ val }}</p>
{% endfor %}
​
{% for foo in d.keys %}
    <p>{{ foo }}</p>
{% endfor %}
​
{% for foo in d.values %}
    <p>{{ foo }}</p>
{% endfor %}
​
{% for foo in d.items %}
    <p>{{ foo }}</p>
{% endfor %}

for...empty

html 复制代码
{% for person in person_list %}
    <p>{{ person.name }}</p>
​
{% empty %}
    <p>sorry,no person here</p>
{% endfor %}

if 标签

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

html 复制代码
{% if num > 100 or num < 0 %}
    <p>无效</p>
{% elif num > 80 and num < 100 %}
    <p>优秀</p>
{% else %}
    <p>凑活吧</p>
{% endif %}
  • if语句支持 and 、or、==、>、<、!=、<=、>=、in、not in、is、is not判断。

with

html 复制代码
{% with d.hobby.3.info as nb  %}
    <p>{{ nb }}</p>
    <p>{{ d.hobby.3.info }}</p>
{% endwith %}
  • 在with语法内就可以通过as后面的别名快速的使用到前面非常复杂获取数据的方式

csrf_token

html 复制代码
{% csrf_token%}
  • 这个标签用于跨站请求伪造保护

模版导入入和继承

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

html 复制代码
<div class="adv">
    <div class="panel panel-default">
        <div class="panel-heading">
            <h3 class="panel-title">Panel title</h3>
        </div>
        <div class="panel-body">
            Panel content
        </div>
    </div>
    <div class="panel panel-danger">
        <div class="panel-heading">
            <h3 class="panel-title">Panel title</h3>
        </div>
        <div class="panel-body">
            Panel content
        </div>
    </div>
    <div class="panel panel-warning">
        <div class="panel-heading">
            <h3 class="panel-title">Panel title</h3>
        </div>
        <div class="panel-body">
            Panel content
        </div>
    </div>
</div>

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

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="/static/js/jquery_3.7.1_jquery.min.js"></script>
    <link rel="stylesheet" href="/static/bootstrap-3.4.1-dist/css/bootstrap.min.css">
    <script src="/static/bootstrap-3.4.1-dist/js/bootstrap.min.js"></script>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
​
        .header {
            height: 50px;
            width: 100%;
            background-color: #369;
        }
    </style>
</head>
<body>
<div class="header"></div>
<div class="container">
    <div class="row">
        <div class="col-md-3">
            {% include 'adv.html' %}
        </div>
        <div class="col-md-9">
            {% block conn %}
                 <h1>你好</h1>
            {% endblock %}
        </div>
    </div>
</div>
</body>
</html>

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

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= | 查年份 |

相关推荐
007php0071 小时前
某大厂跳动面试:计算机网络相关问题解析与总结
java·开发语言·学习·计算机网络·mysql·面试·职场和发展
知识分享小能手1 小时前
微信小程序入门学习教程,从入门到精通,微信小程序核心 API 详解与案例(13)
前端·javascript·学习·react.js·微信小程序·小程序·vue
递归不收敛2 小时前
吴恩达机器学习课程(PyTorch 适配)学习笔记:3.3 推荐系统全面解析
pytorch·学习·机器学习
又是忙碌的一天4 小时前
前端学习 JavaScript(2)
前端·javascript·学习
蒙奇D索大4 小时前
【数据结构】考研数据结构核心考点:二叉排序树(BST)全方位详解与代码实现
数据结构·笔记·学习·考研·算法·改行学it
玲娜贝儿--努力学习买大鸡腿版4 小时前
推荐算法学习笔记(十九)阿里SIM 模型
笔记·学习·推荐算法
光影少年4 小时前
Flutter生态及学习路线
学习·flutter
尤利乌斯.X4 小时前
复杂网络仿真从入门到精通:0 学习路线
网络·学习·matlab·仿真·复杂网络
梦幻精灵_cq5 小时前
70行代码展现我的“毕生”编程能力
学习
Yupureki5 小时前
从零开始的C++学习生活 6:string的入门使用
c语言·c++·学习·visual studio