一、模板路径总结
1. DIRS定义一个目录列表,模板引擎按列表顺序搜索这些目录以查找模板源文件。将templates放在主项目目录下;
2. APP_DIRS告诉模板引擎是否应该进入每个已安装的应用中查找模板,值为True则模板会去安装了的app下面的templates文件夹查找模板。所以我们也可以在每个app的里面创建模板目录templates存放模板,这种方式需要将这个app添加到settings.py文件的INSTALLED_APPS列表中。
二、模板变量
模板变量使用规则:
1. 语法: {{变量名}}
2. 命名由字母和数字以及下划线组成,不能有空格和标点符号
3. 可以使用字典、模型、方法、函数、列表
4. 不要和python或django关键字重名
5. 变量和查找
注:
1. 如果data是一个字典,那么访问data.items将会访问data这个字典的key名为items的值,而不会访问字典的items方法。
2. 点在模板渲染时有特殊的含义。变量名中点表示查找。
# app book/views.py文件 def hello(): return 'django' class Fruits: def __init__(self, name, color): self.name = name self.color = color def say(self): return 'HAHAHAHA' ap = Fruits('apple', 'red') ls = ['x', 'y', 'z'] dc = {'a':1, 'b':2} from django.shortcuts import render def index_4(request): return render(request, 'book/index.html', context = {'book_name': 'python', # 字符串 'hello': hello, # 函数 'fruits_say': ap.say, # 方法 'fruits': ap, # 类对象 'list': ls, #列表 'dict': dc, # 字典 })
# /templates/book/index.html文件 <!DOCTYPE html> <html lang='en'> <head> <meta charset='UTF-8'> <title>模板变量</title> </head> <body> 这个变量是字符串对象:{{books_name}}<br> 这个变量是函数对象:{{hello}}<br> 这个变量是类方法对象:{{fruits_say}}<br> 这个变量是类对象:{{fruits}}<br> 这个变量是类对象,访问类对象的属性:{{fruits.name}}<br> 这个变量是类对象,访问类对象的方法:{{fruits.say}}<br> 这个变量是列表对象{{list}}<br> 这个变量是字典对象,访问列表的元素{{list.1}}<br> 这个变量是字典对象{{dict}}<br> 这个变量是字典对象,访问字典的键{{dict.a}}<br> </body> </html>
三、常用的过滤器
过滤器
作用:对变量进行过滤。在真正渲染出来之前,过滤器会根据功能处理好变量,然后得出结果后在替换掉原来的变量展示出来。
语法: {{fruits|lower}}
管道符号进行链式调用,比如实现一个功能,先把所有字符变成小写,把第一个字符转换成大写。
语法: {{fruits|lower|capfirst}}
使用参数:过滤器可以使用参数,在过滤器名称后面使用冒号“:”,在加上参数,比如要把一个字符串中所有的空格去掉,则可以使用cut过滤器。
语法: {{fruits|cut: " "}}
常用的过滤器
1、add : 字符串相加,数字相加,列表相加,如果失败,将会返回一个空字符串;
2、default:提供一个默认值,在这个值被django人为是False的时候使用。比如:空字符串、None。区别于default_if_none,这个只有在变量为None的时候才使用默认值;
3、first:返回列表中的第一个值;
4、last:返回列表中的最后一个值;
5、date:格式化日期和时间;
6、time:格式化时间;
7、join:拼接;
8、length:返回字符串或者是数组的长度;
9、length_is:字符串或者是数组的长度是否是指定的值;
10、lower:把所有字符串都编程小写;
11、truncatechars:根据后面给的参数,截断字符,如果超过了用...表示;
12、truncatewords:同truncatechaers,这个是以一个单词为单位进行截断。以上两个有xxx_html类型的,针对html,截断标签中的字符,而不会截断标签;
13、capfirst:首字母大写;
14、slice:切割列表;
15、striptags:去掉所有的html标签;
16、safe:关闭变量的自动转义;
17、floatformat:浮点数格式化。
date和time过滤器格式
Y:四位数的年。如:2023
y:两位数的年。如:23
m:两位数的月。如:01,09,12
n:一位数的月。如:1,9,12
d:两位数的日。如:01,08,31
j:一位数的日。如:1,9,31
g:12小时制的一位数的小时。如:1,9,12
G:24小时制的一位数小时。如:0,8,23
h:12小时制的两位数的小时。如:01,09,12
H:24小时制的两位数的小时。如:01,13,22
i:分钟。从00~59
s:秒。从00~59
views.py文件代码
from django.shortcuts import render import datetime # Create your views here. def detail(request, article_id): context = """ 一、url基本概念及格式 URL概念: URL(Uniform Resoure Locator)统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简介的表示, 是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。 urls """ return render(request, 'article/detail.html', context= { 'context': context, 'name': 'friendship', 'age': 18, 'age2':20, 'desc': None, #'我是刘兴华', 'now': datetime.datetime.now(), })
html文件代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>文章详情</title> </head> <body> <div> 一、url基本概念及格式 URL概念: URL(Uniform Resoure Locator)统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简介的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。 urls </div> <div>{{context}}</div> <div>{{ name }}</div> <div>{{ age }}</div> <div>{{ age | add:age2}}</div> <div>{{ name | lower | capfirst}}</div> <DIV>{{desc | default:"这个家伙很懒,什么也没有留下!"}}</DIV> <div>{{ now | date:'Y-m-d H:i:s'}}</div> </body> </html>
关于自动转义
什么是自动转义?
自动转义是将变量的一些特殊字符,比如左箭头(<)、右箭头(>)转义成html代码,这样做的目的是为了处理一些不安全的变量。
< :转义成<;
> :转义成>;
‘ :转义成';
" :转义成";
& :转义成&。
四、静态文件引用
在项目目录下创建static的目录,为了区分开各种类型的文件分别创建css,image,js的目录。
在settings.py文件中添加STATICFILES_DIRS,设置静态文件目录路径,同templates。
标签:变量,转义,fruits,过滤器,1003,模板,name From: https://www.cnblogs.com/lxinghua/p/16994212.html