1模板的存放位置
1.1放在公共的一个文件夹中
首先,创建一个公共的文件夹,里面用来存放各个模板,但是如果我们创建之后应该怎么办呢?
我们应该配置路径,我们前面有提到过,配置路径要在配置文件中就是根目录下的setting文件中。
这个BASE_DIR所存的就是根目录的路径。
我们要配置的路径就是在这个TEMPLATES下面的’DIRS’中来配置的,我们不需要更改这个[],我们只需要在中间添加路径就可以了。
添加之后我们就可以使用了,而我们首先就是要要在这个公共的模板文件夹中放置几个针对于不同应用的文件夹,比如我这里有两个应用,一个是student,一个是teacher,所以我们这里要在这个大的模板文件夹中放置两个小的模板文件夹
之后我们对应的模板文件夹中放置的就是一个html文件,就是所谓的页面文件,就是一个html文件。
之后我们就在对应的应用中开辟路径和设置返回即可。
这里主要的关键就是一个语句。
return render(request, 'teacher/teacher.html')
就是这个语句,前面就是request,后面就是集中统一放置的文件夹中的地址加上小文件夹再加上html所在位置的名字就是这个’ '中放置的东西,之后就会调用render来直接启动html页面。
1.2 分别放置在自己的文件夹中
首先在app下创建自己的模板文件夹。
之后我们还需要更改一个配置,就是在setting.py中添加app所在的名字
之后的工作和之前的工作流程都是一样的,一个需要注意的地方就路径的问题
1.3 顺序问题
对比上两种的方法,我们可能有个问题,就是顺序问题,如果都有谁先谁后呢,其实这个顺序是先查找总的文件再查找自己的app下面的模板
通过这个就可以看到,显示DIRS路径,然后是APP_DIRS,而且不仅仅是这样的,对于app下的模板来说,如果你的APP_DIRS是false的话,当你使用app查找的话,你发现是不会成功的。
1.4 选择问题
既然这两种方式,那我们要怎么选择呢,对于经常使用的app,尽量多用app下的模板,而对于大部分的我们还是经常使用放在一个页面下的,那就可能还有一个问题,就是说我们为什么对于一个页面的模板下面要放置多个文件夹呢,其实这是因为我们可能不同的应用会有相同的中文模板名,所以我们要分不同的文件夹存放。
2 模板变量
首先通过一个小例子来了解模板变量。
这里还有一个特别的地方就是时间问题,其实这个时间正常应该时全球固定时间,就是没有时差的时间,如果你想和当地,比如我们中国的时间相同的话我们就需要改变settings中的一个数据,
就是把UTc时间改成我们东八区的时间就ok了。
3模板过滤器
from django.shortcuts import render, redirect
from django.http import HttpResponse
from datetime import datetime
# Create your views here.
app_name = 'teacher'
def test1(request):
now = datetime.now() # 获取当前时间
lt = [1, 2, 3, 4]
st = 'alallala'
dt = {'name':'tomas', 'age': 18, 'sex':'male'}
return render(request, 'teacher/teacher.html', context={
'now': now,
'lt': lt,
'dt': dt,
'st': st,
})
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>这是第一个页面</title>
</head>
<body>
<h1 style="color: aqua">啦啦啦</h1>
<p style="color: red">现在的时间是:{{ now|date:'Y年m月d日 H:i:s' }}</p>
<p style="color: gold">我是列表:{{ lt }}</p>
<p style="color: green">我是字典:{{ dt }}</p>
<p style="color: purple">我是列表的一个值:{{ lt.1 }}</p>
<p style="color: #000000">我是列表的第一个值:{{ lt|first }}</p>
<p style="color: red">我是列表的最后一个值:{{ lt|last }}</p>
<p style="color: red">我是列表的最后一个值相加后的值:{{ lt|last|add:5 }}</p>
<p style="color: green">我是列表的切片{{ lt|slice:'::-1' }}</p>
<p style="color: blue">我是列表的切片{{ lt|join:'/' }}</p>
<p style="color: purple">我是字母{{ st }}</p>
<p style="color: purple">我是字母大写{{ st|capfirst }}</p>
<p style="color: purple">我是字母全大写{{ st|upper}}</p>
<p style="color: purple">我是字母小写{{ st|lower }}</p>
</body>
</html>
这些就是主要的代码
这个就是整体的效果,有几个需要声明和说明的点,第一个,在date后面的:的前后是不允许缩进的,就是不能用空格,同时html接收的{{}}中的是前面的字符串的键值对中的前面部分,还有这个add后面可以跟字符串,但是必须是能转换为数字的字符串,比如"5"这种才能相加,当然这个|可以通过链式叠加的。
4 静态文件的引入
主要就是通过这几步来完成。