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

相关推荐
Chef_Chen4 小时前
从0开始学习R语言--Day18--分类变量关联性检验
学习
键盘敲没电4 小时前
【IOS】GCD学习
学习·ios·objective-c·xcode
海的诗篇_5 小时前
前端开发面试题总结-JavaScript篇(一)
开发语言·前端·javascript·学习·面试
AgilityBaby5 小时前
UE5 2D角色PaperZD插件动画状态机学习笔记
笔记·学习·ue5
AgilityBaby5 小时前
UE5 创建2D角色帧动画学习笔记
笔记·学习·ue5
武昌库里写JAVA6 小时前
iview Switch Tabs TabPane 使用提示Maximum call stack size exceeded堆栈溢出
java·开发语言·spring boot·学习·课程设计
一弓虽7 小时前
git 学习
git·学习
Moonnnn.9 小时前
【单片机期末】串行口循环缓冲区发送
笔记·单片机·嵌入式硬件·学习
viperrrrrrrrrr710 小时前
大数据学习(131)-Hive数据分析函数总结
大数据·hive·学习
fen_fen10 小时前
学习笔记(26):线性代数-张量的降维求和,简单示例
笔记·学习·算法