版权声明:全是自学! https://blog.csdn.net/qq_42874244/article/details/84532473
毛毛Django修炼之路3——Django基本框架(系统模板)
一、基本语法
1、变量相关
{{name}} 直接调用传递的变量
{{name|length}} 调用方法
{{name|default:"默认值"}} 调用方法
2、逻辑相关
1、if判断:
{% if a>b %}
#写基本语句
{% endif %} #结束判断
{% if a>b %}
#基本语句
{% else %}
#基本语句
{% endif%}
{% if a>b %}
#基本语句
{% elif %}
#基本语句
{% else %}
#基本语句
{% endif %}
2、for循环基本用法
# 基本循环
{% for i in name_list %}
{{ i }}
{% endfor %}
# 如果循环里面的可迭代对象没有数据就返回下一句(空空如也)
{% for i in name_list %}
{{ i }}
{% empty %}
空空如也
{% endfor %}
3、for循环可用属性
语法 | 属性 |
---|---|
forloop.counter | 从1开始计数(1,2,3…) |
forloop.counter0 | 从0 开始计数(0,1,2…) |
forloop.revcounter | 倒计时直到1 (9,8,7…2,1) |
forloop.revcounter0 | 倒计时直到1 (9,8,7…2,1,0) |
forloop.first | 循环的第一个数,返回布尔值 |
forloop.last | 循环的最后一个数,返回布尔值 |
3、filter 用法——用“|”来使用
1、常用的内置filter用法:
语法 | 作用 |
---|---|
length | 计算文本长度 |
filesizeformat | 格式化文件大小(返回人们易读的格式) |
data : “Y-m-d H:i:s” | 格式化时间输出 |
slice | 切片(字符串,列表…) |
safe | 防止XSS攻击(网页脚本攻击) |
truncatechars:20 | 截取多少字符,多余的用 … 表示 |
default | 给定默认值(没有返回值就在页面显示默认值) |
自定义filter方法
1、定义阶段:
a、在APP下面创建一个Python包(py文件夹):templatetags (名字不能变)
b、在包里面创建一个py文件,名字随意。
c、在上述py文件里面进行如下操作:
from django import template # 导入模块
register = template.Library #生成一个注册的实例
@register.filter(name="addsb") # 固定用法,name后面是自己去的名字,后面用这个调用
def add_sb(arg):
return "{}sb".format(arg)# arg是自己传过来的一个变量
2、调用阶段:
a、在Django模板文件中导入刚才新建的py文件
{% load py文件名 %}
b、按照filter的语法调用
{{ name | addsb }}
四、模板和继承
1、为什么要有模板和继承:
在网页的过程中难免会出现代码复用或者是一个页面只改动一部分数据其他的板式不发生变化,此时将这一部分复用的代码,放在新建的一个文件里面,用于以后调用即可节省时间。
2、具体的使用步骤:
1、先把公用的HTML部分代码提取出来放在一个HTML文件里面(如:base.html)
2、在html文件代码内部需要填充其他html文件的地方用block进行占位,如下代码
{% block page_main %}
{% endblock %}
3、在需要调用base.html文件的文件里面用extends 来实现继承 base.html 文件
4、然后用 在block 里面写入需要填入占位符的代码!
如下,使用方法!
#在base.html文件里面有:
{% block page_main %}
{% endblock %}
#在需要调用的html文件里面有:
{% extends 'base.html' %}
{% block page_nain %}
--- #写入样式代码
--- #继续写
{% endblock %}
四、组件——和继承母版类似
如:可以将常出现的导航条保存在一个单独的HTML文件里面,在我的另一个文件需要用到这个导航条的时候我可以通过函数直接调用我需要的代码!此时组件就可以实现这个功能!
===》{% include ‘navbar.html’ %}
人生苦短,我学Python!