第57天:django学习(六)

2023-12-13 20:05:14

模版之过滤器

????????语法:

{{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="<a href="">点击</a>"
{{ value|safe}} ?

模版之标签

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

for标签

????????遍历每一个元素

{% for person in person_list %}
 ? ?<p>{{ person.name }}</p>
{% endfor %}

????????遍历一个字典:

{% 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

{% for person in person_list %}
 ? ?<p>{{ person.name }}</p>
?
{% empty %}
 ? ?<p>sorry,no person here</p>
{% endfor %}

if 标签

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

{% 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

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

csrf_token

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

模版导入入和继承? ? ?

????????写一个被导入的模板adv.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

<!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

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

文章来源:https://blog.csdn.net/Mrdong200144/article/details/134855751
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。