模板的语法
1、变量
- 作用:允许将后端的数据传递给模板(HTML),在模板中,会根据变量的实际值进行显示
- 在Django中允许传递给模板作为变量的数据类型有数字,字符串,列表,元组,字典,函数,对象
- 传递变量到模板
- 1、render:
from django.shortcuts import render def viewsname(request): dic = { "变量1":"值1", "变量2":"值2", } return render(request, 'temp.html', dic)
- 2、loader:
from django.shortcuts import render from django.http import HttpResponse from django.template import loader def viewsname(request): dic = { "变量1":"值1", "变量2":"值2", } t = loader.get_template('temp.html') html = t.render(dic) return HttpResponse(html)
- 在模板中获取变量值 {{ 变量名 }}
2、标签
- 作用:允许嵌套一些服务器端的逻辑运算到模板中
- 语法 {% …%}
- 常用标签(if判断)
- 1、{% if 条件表达式 %}…… {% endif %} 注意可以用not,and和or,但是and和or不能同时出现
- 2、{% if 条件表达式 %}…… {% else %}……{% endif %} 等值判断或区间判断
- 3、{% ifequal 条件表达式 %}…… {% endifequal %} 等值判断
- 4、{% ifequal 条件表达式 %}……{% else %}…… {% endifequal %} 等值判断
def rockets_views(request, num): name1 = "MD" name2 = "YM" sex = 0 return render(request, "rockets.html", locals()) # locals() 将上述的局部变量变成字典
<body> <h1>球员1: {% if name1 == "MD" %} 麦迪 {% endif %} {% ifequal sex 1 %} <span>男</span> {% else %} <span>女</span> {% endifequal %} </h1> <h1>球员2: {% ifequal name2 "YM" %} 姚明 {% endifequal %} {% ifequal sex 1 %} <span>男</span> {% else %} <span>女</span> {% endifequal %} </h1> </body>
- 常用标签(for循环)
- 用法1:{% for 变量 in 列表|元组 %}……{% endfor %}
- 用法2:{% for 变量1,变量2 in 字典 %}……{% endfor %}
- 可以使用的内部变量forloop(无需声明)
- forloop.counter:记录循环的次数
- forloop.counter0:同上,从0开始
- forloop.revcounter:记录未被遍历的数量
- forloop.revcounter0:同上,从0开始
- forloop.first:布尔值,标记是否为第一个元素
- forloop.lasr:布尔值,标记是否为最后一个
3、过滤器
- 作用:在显示变量之前,允许对数据进行筛选或改变
- 语法:{{ 变量 | 过滤器 }}
- 常用过滤器
- 1、{{ var | upper }} 将变量的数据变成大写
- 2、{{ var | lower}} 将变量的数据变成小写
- 3、{{ var | add:num}} 将变量的值加 num
- 4、{{ var | floatformat :n }} 将变量四舍五入到n为小数
参考文档: Django的文档.
4、静态文件处理
- 模板中所用到的css,js,image等一些资源文件都是静态文件
- Django中静态文件的处理
- 第一步:在settings文件中设置静态文件的访问路径和存储路径
- STATIC_URL:指定静态资源的访问路径
- STATICFILES_DIRS:指定在开发阶段所用静态文件所在的根目录
STATIC_URL = '/static/' # 指定静态资源的访问路径,一般不改 # localhost:8000/static/…… 都会找静态文件 STATICFILES_DIRS = (BASE_DIR, 'static') # 指定静态资源存放根目录,一般写死 # BASR_DIR:项目的绝对路径 # 'static':把所有应用中的static文件夹都作为静态资源的存放路径,加载资源时,会搜索全部应用的static文件夹
- 第二步:访问静态资源 (方式一)使用静态路径
- 在应用中创建static文件夹,再在static文件夹中创建css,js,images等文件夹
- 在模板中采用文件路径的方式引入静态文件
<img src="/static/image/abc.jpg"> <!-- 通过静态路径的方式引入静态文件--> <!-- 当 静态访问路径 (STATIC_URL='/static/') 发生变动时,要手动修改静态路径-->
- 访问静态资源 (方式二)使用动态路径
- 在模板文件的顶部增加{% load static %}
- 加载路径为:src="{% static ‘path’ %}"
{% load static %} <img src="{% static 'image/abc' %}"> <!-- 通过动态路径的方式引入静态文件--> <!-- 当 静态访问路径 (STATIC_URL='/static/') 发生变动时,无需修改静态资源加载路径-->
- 第一步:在settings文件中设置静态文件的访问路径和存储路径