前言:django提供了一套模板渲染的机制,将html源码写在模板文件中,然后通过方法将数据渲染后返回给客户端。一、模板的路径设置在项目根目录下创建一个templates文件夹用来存放模板文件,然后将这个文件的路径配置到配置项TEMPLATES的DIRS中。注意要填写模板文件夹的绝对路径,通过代码str(BASE_DIR / 'templates')可以动态生成。二、模板渲染模板渲染本质上就是将数据替换到模板文件的插槽中,和字符串替换一样。三、模板变量最简单的渲染是将变量替换到模板中。在模板中,模板变量的语法是:{{ 变量名 }}在templates文件中再创建一个crm文件夹,然后在其中创建一个index.html,内容如下:添加了一个模板变量msg,这个变量需要从视图传递一个对应的变量进行替换。修改crm.index视图如下:上面的代码非常简单,做了如下工作:在视图中定义了一个变量msg,然后根据路径crm/index.html获取对应的模板,再将变量msg传递给模板进行渲染,最后将渲染好的html返回。上面的代码还可以通过一个快捷函数简化:render函数的第一个参数是请求request,第二个参数是模板路径,第三个参数context是要传递给模板的数据,是一个字典,其中key是模板上对应的变量名,值是实际要渲染的数据。四、模板变量的解析规则模板变量按照如下流程解析替换:当模板引擎遇到模板变量时,它会计算该变量,并将其替换为结果当模板引擎在变量中遇到.时(x.y的形式),它会按以下顺序尝试查找:字典键值查找属性或方法查找数字索引查找如果结果是可调用的,则调用它时不带参数。调用结果成为模板值五、模板标签只能简单渲染变量显然不满足需求,django的模板系统中还提供了模板标签来实现更多的渲染逻辑,例如判断,循环等。下面列出几个常用的模板标签for:循环浏览数组中的每个项目,使该项目可以在上下文变量中可用。例如,要显示student_list中提供的学生列表:if{% if %} 标签会判断给定的变量,当变量为 True 时(比如存在、非空、非布尔值 False),就会输出块内的内容:更多的内置标签见官方文档六、静态文件引用前言:django项目开发过程中,通过django.contrib.staticfiles提供静态文件服务,所以确保它在INSTALLED_APPS配置中6.1 路径设置静态文件的设置有两个:6.1.1 静态文件目录在项目根目录下创建static文件夹,然后配置STATICFILES_DIRS
1
2
3
4
5
# settings.py
...
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')] # 静态文件目录
...
6.1.2 静态文件引用前缀再配置一个STATIC_URL项
1
STATIC_URL = '/static/' # 最后一定要带个`/`
6.2 静态文件引用在static目录下创建文件夹crm,再在crm下创建文件夹css,再在其中创建base.css文件,内容如下
1
2
3
4
* {
coler: red
}
在模板中引用静态文件有两种方法:6.2.1 硬编码不推荐使用在index.html中添加如下引用
1
<link rel="stylesheet" href="/static/crm/css/base.css">
/static/就是上面设置的STATIC_URL的值 crm/css/base.css就是我们想要引入的静态文件的路径。6.2.2 模板标签引用推荐使用在index.html中添加如下代码
1
2
3
4
5
{% load static %} # 写在模板头
...
<link rel="stylesheet" href="{% static 'crm/css/base.css' %}">
利用内置模板标签static动态解析。如果一切正常,当再次访问http://127.0.0.1/crm/index/时,会看到所有的字都变成红色了。