Django视图层、模板层
过滤器方法
- upper 大写方式输出
- add 给value加上一个数值
- capfirst 第一个字母大写
- center 输出指定长度的字符串,把变量居中
- cut 删除指定字符串
- date 格式化日期
- default 如果值不存在,则使用默认值代替
- length 返回列表中元素的个数或字符串长度
- length_is 检查列表,字符串长度是否符合指定值
标签的方法
for标签
{% for 临时遍历 in 序列%}....{%endfor%}
- forloop.counter 当前循环的索引值(从1开始)
- forloop.counter0 当前循环的索引值(从0开始)
- forloop.revcounter 当前循环的倒序索引(从1开始)
- forloop.revcounter0 当前循环的倒序索引(从0开始)
- forloop.first 当前循环是不是第一次循环(布尔值)
- forloop.last 当前循环是不是最后一次循环(布尔值)
for...empty标签
如果变量名不存在或者内容为空的时候显示{%empty%}中的内容,否则不执行
{% for game in games%}
...{%empty%}...{%endfor%}
...if标签
(1)if 标签
格式:
{% if 判断条件 %}
… {% endif %} 注: if 语句支持 and、or、==、<、>、!=、<=,>=,in、not in、is、is not判断
(2)if … else 标签
格式:
{% if name_length|length > 6 %}
…
{% else %}
…
{% endif %}
(3).if…elif…else 标签
格式:
{% if name_length|length > 6 %}
…
{% elif age == 20 %}
…
{% else %}
…
{% endif %}
CBV流程
1.首先要编写自定义的视图类,必须继承View类。
2.然后在路由中配置URL调用视图类的as_View方法,也就是view类的as_view方法
3.as_view是一个闭包函数,返回的是view方法。
4.view方法先实例化类视图对象,然后给类视图对象赋值,最后调用dispatch方法
5.dispatch方法先判断该请求方式是否在它所有的方法中,然后通过反射getattr的请求方式获取指定的请求方法(也就是对应的函数),并执行相应的代码块
Django请求生命周期流程图
自定义过滤器,标签的步骤
- 在settings中的INSTALLED_APPS添加当前app的名字,不然django无法找到自定义的过滤器或标签
- 在文件夹app01中创建子文件templatetags
- 在templatetags新建任意py文件,在该文件中自定义过滤器或标签
- 自定义过滤器或标签必须重新启动django生效
既然选择了远方,只能风雨兼程