doraemon的python html中的过滤器、if、for条件句

### 11.4 HTML中Filter过滤器

MVC和MTV

- MVC:
  - M:model 模型
  - V:view视图 HTML
  - C:controller 控制器 ——路由器 传递指令、业务逻辑
- MTV:
  - M: model 模块 ORM
  - T:template 模板 HTML
  - V:view 业务逻辑

模板和变量之间的关系

- 在html中变量都用{{}}接收
- 方法有:.索引 .key .属性 .方法
  - {{list.索引}}   ——正向索引
  - {{dic.keys}}
  - {{dic.value}}
  - {{dic.items}}
  - {{pub.name}}

#### 11.4.1 filter过滤器

语法:{{value|filter_name:参数}}

内置过滤器

- default     {{value|default:"nothing"}}  #变量名不存在或者为空的时候,显示的默认值

- filesizeformat  文件的大小

- add  相当于加法,字符串的拼接、列表的拼接

- slice    {{hobby|slice:"-2:0:-1"}}   切片

- date    {{now|date:"Y-m-d H:i:s"}}

- ```python
  #setting中的配置(设置时间的默认格式):
  USER_L10N = False
  DATETIME_FORMAT = 'Y-m-d H:i:s'
  ```

- safe  如果传HTML的语句,会进行安全处理,将其转化成字符串,safe能将html语句直接进行传递

- length 取长度

- join  使用字符串连接列表

- first  取第一个

- last 取最后一个



自定义filter

1. 在app下创建一个名为templatetags的python
2. 在python中创建py文件,文件名自定义为任何名字。例如(my_tags.py)
3. 在该文件中写:

```python
from django import template

register = template.Library()   #register也不能改变
```

   4.写函数+装饰器

```python
@register.fliter
def add_xx(value,arg)   #最多两个参数
    return "{}-{}".format(value,arg)
```

   5.在html中使用

```html
{% load my_tags%}
{{'liujia'|add_xx:'nb'}}
```



### 11.5 for循环和if判断

```html
{% for book in all_book%}
    <tr>
        .......
    </tr>
{% empty %}
    <td colspan='s' style='text-algin:center'>没有相关的数据</td>    #当循环的列表是空的时候
{% endfor %}
```

foorloop

```html
{% for i in list %}
    {{i}}
    {{forloop.conuter}}
{% endfor %}

counter 从1开始
conuter0  从0开始
recounter 到1结束
recounter0 到0结束
```



with

```html
{% with 变量 as new %}
{{new}}
{%endwith%}
```



连续判断

- python 10>5>1 ----> 10>5 and 5>1 ----->true
- js    10>5>1 ------>10>5---> true>1-----false
- 模板中不支持连续判断,也不支持算数运算

csrf_token

- csrf 跨站请求伪造
- 浏览器从钓网站获取了银行的form表单,然后将填好的表单传给银行来进行诈骗、转账

猜你喜欢

转载自www.cnblogs.com/doraemon548542/p/11609112.html
今日推荐